Elasticsearch5.4署遇到的问题

问题一

can not run elasticsearch as root

Elastic 不建议经过root用户启动ES服务器,若是非要用root启动,能够在config/jvm.options配置文件中,添加参数:bootstrap

-Des.insecure.allow.root=true

问题二

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

缘由:
最大虚拟内存过小
解决:
1.切换到root用户
2.vi /etc/sysctl.conf
3.添加内容:vm.max_map_count=655360
4.执行命令:sysctl -p服务器

问题三

max number of threads [1024] for user [xxx] likely too low, increase to at least [2048]

缘由:
没法建立本地线程问题,用户最大可建立线程数过小
解决:
1.切换到root用户
2.vi /etc/security/limits.d/90-nproc.conf
3.找到以下内容:app

* soft nproc 1024

修改成jvm

* soft nproc 2048

保存、退出、从新登陆,使配置生效elasticsearch

问题四测试

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

缘由:
没法建立本地文件问题,用户最大可建立文件数过小
解决方案:
1.切换到root用户
2.vi /etc/security/limits.conf
3.添加以下内容:spa

* soft nofile 65536
* hard nofile 131072

* soft nproc 2048
* hard nproc 4096

*表示全部用户
保存、退出、从新登陆,使配置生效线程

问题五

Bulk请求异常(如DocumentMissingException、VersionConflictEngineException)致使内存泄漏code

缘由:blog

原文地址:https://www.jianshu.com/p/d4f7a6d58008

解决:

参考上面的文档后,也为ES找到了规避这个问题的措施: 在ES的JVM配置文件jvm.options里,添加一个log4j的系统变量
-Dlog4j2.enable.threadlocals=false

禁用掉thread local便可。 通过测试,该选项能够有效避开这个内存泄漏问题。 

问题六

elasticsearch官网建议生产环境须要设置bootstrap.memory_lock: true

启动elasticsearch,报错信息以下:

ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked

缘由:

bootstrap.memory_lock: true致使Elasticsearch启动失败问题

解决:

1./etc/security/limits.conf ,不限制Es启动用户(如xxx)的memlock

xxx soft memlock unlimited
xxx hard memlock unlimited

2.修改:/etc/sysctl.conf

vm.swappiness=0