Elasticsearch 6.4.3启动卡在初始化阶段无报错无法正常工作
Elasticsearch 6.4.3 启动卡在初始化阶段排查方案
首先优先处理配置项的显性错误:
- 你当前是Windows NTFS环境,
elasticsearch.yml中配置的path.repo: ["/mount/backups", "/mount/longterm_backups"]是Linux系统的路径格式,这两个路径在你的机器上不存在。Elasticsearch 6.x版本在Windows环境下校验快照仓库路径时,遇到不存在的非Windows格式路径经常会阻塞初始化流程且不抛出明确错误,优先把这行配置注释掉,或者改成你机器上实际存在的Windows路径,例如path.repo: ["C:\\ELK\\Elasticsearch\\backups"](注意路径用双反斜杠转义)。
之后按以下顺序逐次排查:
1. 清除残留锁文件
如果之前服务是异常退出(强制杀进程、断电、系统自动重启),数据目录下的锁文件会被标记为占用状态,ES启动时会持续等待锁释放,不会打印错误日志:
- 打开任务管理器,结束所有
elasticsearch.exe相关的残留进程 - 进入数据目录
C:\ELK\Elasticsearch\data\nodes\0,搜索所有后缀为.lock的文件,全部删除 - 不要直接双击
elasticsearch.exe启动,打开命令提示符(CMD)进入C:\ELK\Elasticsearch\bin目录,执行elasticsearch.bat前台启动,前台模式会打印全量运行日志,能直接看到阻塞点。
2. 修复目录权限
ES安装在C盘时经常遇到权限阻塞问题:
- 右键点击
C:\ELK文件夹,选择「属性-安全」,给当前启动ES的Windows账号分配该目录的完全控制权限 - 右键进入文件夹「属性-高级」,取消勾选「压缩内容以便节省磁盘空间」,将设置应用到所有子文件和子文件夹。C盘开启磁盘压缩时,ES写入索引文件会触发系统文件锁导致初始化卡住。
3. 校验JVM内存配置
你当前日志显示堆内存分配为15.9GB,先确认JVM配置是否合理:
- 打开
config/jvm.options文件,检查Xms和Xmx两个配置项,两个值必须设置为完全一致的大小 - 临时把两个值都调整为4G测试启动:
-Xms4g -Xmx4g
如果调整后能正常启动,再根据服务器实际内存逐步调大堆内存,注意堆内存不要超过32G,也不要超过机器总内存的50%。
4. 检查端口占用
提前确认ES需要的端口没有被其他进程占用:
- 在CMD中执行以下两个命令,查看9200、9300端口是否被占用:
netstat -ano | findstr "9200" netstat -ano | findstr "9300"
- 如果命令返回了对应的PID,去任务管理器确认对应进程,杀掉占用端口的异常进程后再启动ES。
验证标准
前台启动后如果日志打印出[JO01HQESKAVM02] started字样,访问http://localhost:9200能返回节点版本、名称等信息,就说明服务启动正常。
内容的提问来源于stack exchange,提问作者Nimer Awad
相关产品推荐
相关产品推荐

