elasticsearch 调优过程

调优过程
refresh间隔 副本数 总耗时 bulk 量 translog条数 translog大小 文档总数 速度 备注
1s 2 130min 1000 5000 512 MB(默认) 15kw 11.5W/min  
1s 2 90min 2000 5000 512 MB(默认) 17kw 18.8W/min  
60s 2 40min 2000 5000 512 MB(默认) 15KW 37.5W/min  
60s 2 47min 2000 5000 512 MB(默认) 17KW 36.1W/min  
60s 0 25min 2000 5000 512 MB(默认) 17kw 68W/min  
60s 0 28min 2000 10000 1g 17kw 60.7W/min es日志可以看出
 merge限制了索引的速度

所以创建流程图

  

所以优化从几个点开始:减少segment  优化translog 以及缩减es的文档大小

1、调整mapping;缩小索引大小

    1、去掉_all _all:{"enabled":"false"}
    2、如果分词不参与打分”norms”:false
    3、不需要短语搜索可以禁用positions: "indexe_options":"freqs"
    4、source启用压缩 _source:{"compress":"true"}

2、设置refresh时间 为60s
3、设备segement和合并磁盘限制

       段合并是很消耗计算资源和磁盘IO的操作,特别是出现比较大的段合并。 当出现段合并的速度落后于索引写入的速度,Elasticsearch为了避免出现堆积的段数量爆发,会降低单个线程的索引写入速度,并且会在INFO的log里记录“now throttling indexing”Elasticsearch默认比较保守,不想让搜索的性能被后台的段合并影响,默认的段合并速率限制比较低,默认是20MB/s。可以通过grep es的日志,看下日志里面 now throttling indexing 多不多。如果不多说明合并的速度并没有落后与写入的速度。
设置限制大小:indices.store.throttle.max_bytes_per_sec:100m
如果没有搜索可以把限制关掉
"indices.store.throttle.type" : "none"
索引完在打开 
"indices.store.throttle.type" : "merge"
 如果3设置好的话,不需要设置2的,因为3设置好的话表示segment量少,并且大。这样的话merge的几率会少,并且有利于搜索 。

4、设置translog

   1、设置flush时间默认是30min
   2、设置log文件大小,默认是512M 改为1g index.translog.flush_threshold_size
   3、设置文件条数限制:index.translog.flush_threshold_ops 默认5K改为1W
   4、每次flush是同步的过程,需要等待全部flush完成后写入在响应,所以需要改成异步写入

      

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值