ES实时刷新与n秒刷新,压测性能耗损情况
来源:互联网 发布:js实现继承的方法 编辑:程序博客网 时间:2024/05/17 08:56
ES压测
机器配置: CPU:4核 内存:8G 两台集群机器
一、10万数据
1、50个线程(实时刷新,设置方法参考:http://blog.csdn.net/wwd0501/article/details/78316581)
ES的实时刷新性能比默认的1s刷新性能下降10倍。
2、100个线程(似乎100个线程没有全都用上)
3、设置30s更新,索引创建后,隔30s刷新(设置方式参考:http://blog.csdn.net/wwd0501/article/details/78316581)
二、100万数据
1、50个线程
机器配置: CPU:4核 内存:8G 两台集群机器
一、10万数据
1、50个线程(实时刷新,设置方法参考:http://blog.csdn.net/wwd0501/article/details/78316581)
①创建索引后,默认1s更新
耗时131437ms(2分钟多) 丢索引情况无丢失 CPU情况100%左右内存使用情况30%左右异常情况无②创建索引后实时更新
耗时1647341ms(27分钟多) 丢索引情况无丢失CPU情况CPU经常300%~380%内存使用情况30%左右异常情况无ES的实时刷新性能比默认的1s刷新性能下降10倍。
2、100个线程(似乎100个线程没有全都用上)
①创建索引后,默认1s更新
耗时140639ms 丢索引情况无丢失 CPU情况100%左右内存使用情况30%左右异常情况无②创建索引后实时更新
耗时847928ms 丢索引情况无丢失CPU情况CPU使用不断增加,后期维持在380%(CPU用尽)内存使用情况30%左右异常情况无3、设置30s更新,索引创建后,隔30s刷新(设置方式参考:http://blog.csdn.net/wwd0501/article/details/78316581)
50个线程
耗时279409ms 丢索引情况无丢失CPU情况基本都是10%以下,偶尔60%左右内存使用情况30%左右异常情况无
二、100万数据
1、50个线程
①创建索引后,默认1s更新
耗时2246360ms 丢索引情况无丢失 CPU情况有段时间30%左右,大部分100%左右(波动至100%时,索引创建很快,有可能是网络不好导致请求没有到达ES)内存使用情况30%左右异常情况无②创建索引后实时更新 太耗时,没有压测完。
Java压测代码:
package test;import java.util.Random;import java.util.UUID;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicLong;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;import org.elasticsearch.client.Client;import product.Product;import com.alibaba.fastjson.JSON;/** * * Description: ES实时刷新,压测性能耗损情况 * * //设置实时刷新 .setRefreshPolicy(RefreshPolicy.IMMEDIATE) * CreateTime: 2017年9月23日 下午2:20:14 * */public class EsTest {private static int count = 50;private static ExecutorService cachedThreadPool = Executors.newFixedThreadPool(count);public static void main(String[] args) { try { System.out.println("es client init start"); long start = System.currentTimeMillis(); Client client = ElasticsearchConfiguration.getClient(); System.out.println("es client init end:"+(System.currentTimeMillis()-start)+"ms"); System.out.println("====================test start"); start = System.currentTimeMillis(); AtomicLong productId=new AtomicLong(); CountDownLatch countDownLatch = new CountDownLatch(count); for (int i = 0; i < count; i++) { cachedThreadPool.execute(new Runnable() { @Override public void run() { System.out.println(1); addProduct(productId, client); countDownLatch.countDown(); } });} countDownLatch.await(); System.out.println("总耗时:" + (System.currentTimeMillis()-start) + "ms"); cachedThreadPool.shutdown();} catch (Exception e) {e.printStackTrace();} }private static void addProduct(AtomicLong productId,Client client) {int i = 0;Product product = null;for (; i < 20000; i++) {try {product = new Product();product.setProductID(productId.incrementAndGet());product.setProductName(getProductName());product.setProductBrief("商品简介:"+UUID.randomUUID());product.setPlaceProvince("河北省");product.setPlaceCity("固安");product.setProducer("獐子岛");//设置实时刷新IndexResponse response = client.prepareIndex("wareic-bak","product",product.getProductID().toString()).setSource(JSON.toJSONString(product)).setRefreshPolicy(RefreshPolicy.IMMEDIATE).get(); } catch (Exception e) {e.printStackTrace();}}System.out.println(i);} private static String getProductName(){ String[]productNameArray={"西红柿番茄","西葫芦","宜家清新简约马克杯","螃蟹","文件柜","海鲜","电热水壶"}; return productNameArray[new Random().nextInt(6)]+new Random().nextInt(100000000); }}ElasticsearchConfiguration类
import org.elasticsearch.client.Client;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.transport.client.PreBuiltTransportClient;import java.net.InetAddress;import java.net.URI;import java.net.UnknownHostException;import java.util.Arrays;import java.util.List;public class ElasticsearchConfiguration { private static TransportClient client; private static String clusterName; private static List<String> clusterNodes; static { clusterName = "shopmall-es"; clusterNodes = Arrays.asList("http://172.16.32.69:9300","http://172.16.32.48:9300"); } private ElasticsearchConfiguration() { } public static Client getClient() throws UnknownHostException { Settings settings = Settings.builder().put("cluster.name", clusterName).build(); client = new PreBuiltTransportClient(settings); for (String node : clusterNodes) { URI host = URI.create(node); client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host.getHost()), host.getPort())); } return client; } public static void close() { client.close(); }}Product类
package test;public class Product { /** * 商品ID */ private Long productID; /** * 商品编码 */ private String productCode; /** * 商品名称 */ private String productName; /** * 商品简介 */ private String productBrief; /** * 商品主图URL地址 */ private String imgUrl; /** * 商品产地省 */ private String placeProvince; /** * 商品产地市 */ private String placeCity; /** * 生产厂家 */ private String producer;public Long getProductID() {return productID;}public void setProductID(Long productID) {this.productID = productID;}public String getProductCode() {return productCode;}public void setProductCode(String productCode) {this.productCode = productCode;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public String getProductBrief() {return productBrief;}public void setProductBrief(String productBrief) {this.productBrief = productBrief;}public String getImgUrl() {return imgUrl;}public void setImgUrl(String imgUrl) {this.imgUrl = imgUrl;}public String getPlaceProvince() {return placeProvince;}public void setPlaceProvince(String placeProvince) {this.placeProvince = placeProvince;}public String getPlaceCity() {return placeCity;}public void setPlaceCity(String placeCity) {this.placeCity = placeCity;}public String getProducer() {return producer;}public void setProducer(String producer) {this.producer = producer;}}
阅读全文
0 0
- ES实时刷新与n秒刷新,压测性能耗损情况
- 用trace32实时查看屏幕刷新情况
- html实时显示系统时间,并实时刷新到秒
- 查看实时刷新刷新日志
- listView实时刷新
- js 实时刷新 暂停
- Highchart实时刷新
- fusionwidgets 关闭实时刷新
- ajax实现实时刷新
- android实时刷新
- ajax实时刷新
- gulp 实现实时刷新
- 实时刷新 fis3
- 浏览器实时刷新
- RCP CommonNavigator 实时刷新
- gulp 实现实时刷新
- BareTailProfessional实时刷新日志
- 物化视图刷新原理与性能诊断
- my.ini在电脑文件的位置
- JAVA Socket编程学习9--Netty入门之Hello World!
- bootstrap table使用实例
- Java加密
- 内存管理
- ES实时刷新与n秒刷新,压测性能耗损情况
- spring管理bean的三种创建方式
- DUBBO学习起点-运行官网的例子
- VM虚拟机CentOS7下mysql服务启动失败的解决办法
- Cannot complete the install because one or more required items could not be found解决办法
- MySQL常用SQL语句
- STM32高级定时器(1)
- (C#)Windows Shell 外壳编程系列8
- 数据结构实验之图论六:村村通公路