由于JVM发生swap交换会导致极大降低ES的性能,为了防止ES发生内存交换,我们可以通过锁定内存来实现。这将极大提高查询性能,但同时可能造成OOM,需要对应做好资源监控,必要的时候进行干预。

内存锁定的方法:

1. 修改ES的配置文件elasticsearch.yml,设置bootstrap.memory_lock为true;

2. 修改jvm.options,通常设置-Xms和-Xmx的的值为“物理内存大小的一半和32G的较小值”

3. 关闭操作系统的swap

临时关闭:sudo swapoff -a 

永久关闭:sudo vim /etc/fstab,注释掉或删除所有swap相关的内容

4.修改/etc/security/limits.conf,设置memlock为unlimited

elk hard memlock unlimited

elk soft memlock unlimited

5.修改/etc/systemd/system.conf,设置vm.max_map_count为一个较大的值

  vm.max_map_count=10240000

6.修改/etc/systemd/system.conf,设置DefaultLimitNOFILE,DefaultLimitNPROC,DefaultLimitMEMLOCK为一个较大值,或者不限定

 7.重启ES服务

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐