由于当jvm开始swapping时es的效率会降低,所以要保证它不swap,这对节点健康极其重要。实现这一目标的一种方法是将 bootstrap.memory_lock 设置为true。
要使此设置有效,首先需要配置其他系统设置。有关如何正确设置内存锁定的更多详细信息,请参阅启用bootstrap.memory_lock。
bootstrap.memory_lock: 是否锁住内存,避免交换(swapped)带来的性能损失,默认值是: false
bootstrap.system_call_filter: 是否支持过滤掉系统调用。elasticsearch 5.2以后引入的功能,在bootstrap的时候check是否支持seccomp。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
如果看到mlockall为false,则表示mlockall请求失败。还将在日志中看到一行”Unable to lock JVM Memory”。
elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked:
安装elasticsearch报错如下:
1 2 3 | |
网上查找资料,发现都不是适应自己的环境。最后在官网找到了方法:
不过先跟大家声明一点就是:环境不一样解决的方法也不一样,这里是Centos7.5版本的系统,所有的服务都由systemd来管理。elasticsearch是6.5.4版本,使用RPM包的方式安装的。
现在我们开始解决问题:
1、修改/etc/sysconfig/elasticsearch文件调整JVM内存大小
1 2 3 4 5 | |
替换16g为总内存的一半(Elasticsearch官方建议是主机总内存的一半)
2、修改/etc/security/limits.conf文件内容
1 2 | |
需要将elasticsearch替换为运行Elasticsearch程序的用户,使用root执行:service elasticsearch start实际上是以elasticsearch用户来执行
3、在/etc/systemd/system/elasticsearch.service.d目录下创建一个文件override.conf,并添加下列内容
1 2 3 | |
4、最后重新载入配置文件更新服务
systemctl daemon-reload
5、重启elasticsearch
service elasticsearch restart