无论才能、知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。

ES处理大数据插入运行几个小时候出现性能问题

Elasticsearch | 作者 qiqi18 | 发布于2016年03月28日 | 阅读数:8656

es集群配置有三台,一台master ,两台 slave.
三台机器配置大概是这样 CPU: 6核CPU,物理CPU 2个 、逻辑CPU 24个,内存64G,磁盘22块。
master:不存数据,两台slave 存数据。
 
现在用java写了采集日志文件程序,向master发送数据,大概计算每秒ES插入2.2万条记录,索引规划为每小时一个索引,但是运行几个小时之后,插入越来越缓慢,CPU 和 内存的频率也很高。查看slave的ES 进程,使用虚拟内存达到63G左右,我ES里面配置给的是32G,查看ES的log 有 频繁的now throttling indexing: numMergesInFlight=6, maxNumMerges=5 和 stop throttling indexing: numMergesInFlight=4, maxNumMerges=5。
  出现上面情况后,把采集日志程序停掉后,两台slave ES的cpu 好像还在处理什么计算,频率使用在50%左右,内存涨到一定程度后又释放,然后内存又慢慢的增长。
 
  初步怀疑是不是ES的端合并导致该问题的呢,我的ES 端合并配置如下:
index.merge.policy.expunge_deletes_allowed: 50
index.merge.policy.segments_per_tier: 10
index.merge.policy.max_merge_at_once: 5
index.merge.policy.max_merge_at_once_explicit: 5
index.merge.policy.max_merged_segment: 1gb
index.merge.policy.reclaim_deletes_weight: 10.0
 
有没有大神,对处理大数据插入,越来越缓慢的有什么解决办法,或有什么好的建议。
 
已邀请:

helloes

赞同来自:

ES什么版本?如果是2.2,看下有没有这个日志打印出来
compressed ordinary object pointers [true]

 CPU高,看下有没有一直在GC
内存高,有没有设置fielddata之类的?如果有,可以改为doc values
now throttling indexing: numMergesInFlight=6, maxNumMerges=5 和 stop throttling indexing: numMergesInFlight=4, 
这个是因为merge的速度跟不上索引的速度了,可以试试调大一点indices.store.throttle.max_bytes_per_sec(如果你的硬盘读写撑得住的话)
 
index.merge.policy.expunge_deletes_allowed: 50
index.merge.policy.segments_per_tier: 10
index.merge.policy.max_merge_at_once: 5
index.merge.policy.max_merge_at_once_explicit: 5
index.merge.policy.max_merged_segment: 1gb
index.merge.policy.reclaim_deletes_weight: 10.0
这些好像没有默认值那么好吧?

要回复问题请先登录注册