Ubuntu16.04下ElasticSearch2.4.6无报错无法启动求助
排查Ubuntu 16.04下Elasticsearch 2.4.6启动无反应的问题
针对你遇到的ES 2.4.6启动直接退出、无日志输出,而5.x版本正常运行的情况,我整理了几个常见的排查方向和解决方法:
1. 检查Java版本兼容性
Elasticsearch 2.4.6仅支持Java 8(Oracle JDK或OpenJDK 8),而5.x版本对Java版本的支持范围更广(可兼容Java 8及部分更高版本)。如果你的系统默认Java版本是9+,ES 2.4.6会直接启动失败,且可能无日志输出。
执行以下命令确认Java版本:
java -version
如果输出不是1.8.x系列,建议安装OpenJDK 8并设置为默认版本:
sudo apt-get install openjdk-8-jdk sudo update-alternatives --config java
2. 检查系统资源限制是否达标
ES 2.4.6对系统的文件描述符、线程数等资源有严格要求,Ubuntu 16.04的默认配置可能无法满足:
- 检查当前文件描述符限制:
ulimit -n,要求至少65535 - 检查线程数限制:
ulimit -u,要求至少4096 - 检查虚拟内存限制:
sysctl vm.max_map_count,要求至少262144
如果不达标,按以下步骤修改:
- 编辑
/etc/security/limits.conf,添加:
(如果用root启动,替换为elasticsearch soft nofile 65535 elasticsearch hard nofile 65535 elasticsearch soft nproc 4096 elasticsearch hard nproc 4096root) - 编辑
/etc/sysctl.conf,添加:vm.max_map_count=262144 - 执行
sysctl -p让虚拟内存配置生效,然后重新登录系统让limits配置生效。
3. 手动执行启动命令查看报错
启动脚本中的exec命令可能会吃掉错误输出,你可以直接手动执行核心启动命令,在控制台查看具体报错:
# 先切换到ES的bin目录 cd /path/to/elasticsearch-2.4.6/bin # 手动执行启动命令(去掉exec) "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" org.elasticsearch.bootstrap.Elasticsearch start "$@"
这一步大概率会输出具体的启动失败原因,比如权限不足、JVM参数错误等。
4. 检查日志位置的其他可能性
如果ES日志目录没有内容,可能是以下原因:
- 启动用户没有
$ES_HOME/logs目录的读写权限:执行ls -l $ES_HOME/logs确认权限,确保启动用户有读写权限。 - 日志路径被自定义修改:检查
$ES_HOME/config/logging.yml文件中的path.logs配置,确认日志实际存储位置。 - 系统日志中可能有记录:查看系统日志文件
/var/log/syslog,用以下命令过滤ES相关信息:grep elasticsearch /var/log/syslog
5. 检查JVM参数配置
ES 2.4.6的JVM堆内存设置如果不合理(比如超过系统可用内存的一半),会导致启动直接崩溃。检查$ES_HOME/config/jvm.options或elasticsearch.in.sh中的ES_JAVA_OPTS配置,确保-Xms和-Xmx的值不超过系统可用内存的50%,且不超过32G(ES堆内存建议最大32G)。
比如系统有4G内存,建议设置:
-Xms2g -Xmx2g
内容的提问来源于stack exchange,提问作者Tamim Addari
相关产品推荐
相关产品推荐

