Elasticsearch进程内存锁定失败

Sha*_*s88 5 linux redhat elasticsearch

我设置了boostrap.memory_lock = true更新了/etc/security/limits.conf为弹性搜索用户增加了memlock unlimited

我的弹性搜索运行好几个月了.突然间,它失败了一天.在日志中我可以看到下面的错误,进程永远不会启动

错误:引导程序检查弹性搜索过程请求的内存锁定失败,但内存未锁定

我点击了ulimit -as,我可以看到最大锁定内存设置为无限制.这里出了什么问题?我已经尝试了几个小时,但一切都是徒劳的.请帮忙.

操作系统是RHEL 7.2 Elasticsearch 5.1.2

ulimit -as输出

core file size        (blocks -c) 0
data seg size         (kbytes -d) unlimited
scheduling policy            (-e) 0
file size            (blocks, -f) unlimited
pending signals              (-i) 83552
max locked memory    (kbytes, -l) unlimited
max memory size      (kbytes, -m) unlimited
open files                   (-n) 65536
pipe size         (512 bytes, -q) 8
POSIX message queues   (bytes,-q) 819200
real-time priority           (-r) 0
stack size            kbytes, -s) 8192
cpu time             seconds, -t) unlimited
max user processes           (-u) 4096
virtual memory       (kbytes, -v) unlimited
file locks                   (-x) unlimited
Run Code Online (Sandbox Code Playgroud)

ugo*_*san 18

以下是我在RedHat/Centos 7上的ES节点上锁定内存所做的工作(如果使用systemd,它将在其他发行版上工作).

您必须在4个不同的地方进行更改:

1)/ etc/sysconfig/elasticsearch

在sysconfig上:/etc/sysconfig/elasticsearch你应该:

ES_JAVA_OPTS="-Xms4g -Xmx4g" 
MAX_LOCKED_MEMORY=unlimited
Run Code Online (Sandbox Code Playgroud)

(用HALF替换4g你可用的RAM,如这里推荐的那样)

2)/etc/security/limits.conf

在安全限制配置:/etc/security/limits.conf你应该有

elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
Run Code Online (Sandbox Code Playgroud)

3)/usr/lib/systemd/system/elasticsearch.service

在服务脚本上:/usr/lib/systemd/system/elasticsearch.service您应该取消注释:

LimitMEMLOCK=infinity
Run Code Online (Sandbox Code Playgroud)

你应该systemctl daemon-reload在更改服务脚本后做

4)/etc/elasticsearch/elasticsearch.yml

最后在elasticsearch配置上:/etc/elasticsearch/elasticsearch.yml你应该添加:

bootstrap.memory_lock: true
Run Code Online (Sandbox Code Playgroud)

多数民众赞成,重启你的节点,RAM将被锁定,你应该注意到一个重大的性能提升.

  • 你的回答很有帮助。您能否推荐为生产设置弹性集群所需的其他必要设置? (2认同)

小智 1

尝试在/etc/sysconfig/elasticsearch文件中设置MAX_LOCKED_MEMORY=unlimited

/usr/lib/systemd/system/elasticsearch.service中 设置LimitMEMLOCK=infinity