问题一
can not run elasticsearch as root
Elastic 不建议通过root用户启动ES服务器,如果非要用root启动,可以在config/jvm.options配置文件中,添加参数:
-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.找到如下内容:
* soft nproc 1024
修改为
* soft nproc 2048
保存、退出、重新登录,使配置生效
问题四
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
原因:
无法创建本地文件问题,用户最大可创建文件数太小
解决方案:
1.切换到root用户
2.vi /etc/security/limits.conf
3.添加如下内容:
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
*表示所有用户
保存、退出、重新登录,使配置生效
问题五
Bulk请求异常(如DocumentMissingException、VersionConflictEngineException)导致内存泄漏
原因:
原文地址: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