Elasticsearch内存优化

探讨ES集群中Java heap设置对性能的影响,尤其是在使用CMS垃圾回收时遇到的问题,如长时间的GC停顿和老年代内存溢出。通过改用G1GC,有效解决这些问题,并介绍如何通过关闭多余索引优化heap使用。
摘要由CSDN通过智能技术生成

    众所周知ES的java heap通常设置为32G以下,因为大于某个阈值(根据系统不同而不同,根据oracle官网https://docs.oracle.com/javase/8/docs/technotes/guides/vm/performance-enhancements-7.html#zeroBasedCompressedOop最小可到26G),Zero-Based Compressed Ordinary Object Pointers (oops)不会被启用,将会导致更多的内存消耗。

    现场的情况ES集群都使用的是CMS垃圾回收,heap设置为31G,有些机器没有任何任务的情况下,也会出现6-7秒进行一次gc,由于heap比较大,一次minor gc的消耗通常在200ms左右,在出现大量请求的时候,gc的时间就很长了,这是不能容忍的。后来现场改用G1 GC解决了这个问题。

    还有出现的情况是,es存储的index过多,导致old gen满了,full gc都无法回收的情况,特别当其是G1 GC时这个情况更为严重,更容易导致内存溢出。因为es是要将index的倒排索引保存在java heap里的,且不会被回收,如果集群保存过多的open状态的index,很有可能会导致heap的老年代使用比例过高的问题。这个问题关闭掉部分不用的索引就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值