You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server启动SonarQube时Elasticsearch异常退出(错误码1)

Windows Server启动SonarQube报错:Elasticsearch意外退出(退出码1)

问题详情

执行startsonar.bat时反复触发如下错误:

Elasticsearch exited unexpectedly, with exit code 1

已尝试的排查操作:

  • 终止机器上所有Java进程
  • 删除SonarQube安装目录下的/data/es8文件夹
  • 重启服务器

完整报错日志

Feb 22, 2024 12:36:03 PM sun.til.locale-provider.LocaleProviderAdapter
WARNING: COMPAT locale provider will be removed in a future release
ERROR: Elasticsearch did not exit normally - check the logs at D:\ISO\sonarqube-10.4.0.87286\sonarqube-10.4.0.87286\logs\sonarqube.log
ERROR: Elasticsearch exited unexpectedly, with exit code 1
2024.02.22 12:36:09 WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ElasticSearch]:
2024.02.22 12:36:09 INFO app[][o.s.a.SchedulerImpl] Process [ElasticSearch] is stopped
2024.02.22 12:36:09 ERROR app[][o.s.a.p.EsManagedProcess] Failed to check status java.lang.RuntimeException: thread waiting for the response was interrupted
at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:901)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:300)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288)
at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2699)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2171)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2137)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2105)
at org.elasticsearch.client.ClusterClient.health(ClusterClient.java:151)
at org.sonar.application.es.EsConnectorImpl.getClusterHealthStatus(EsConnectorImpl.java:79)
at org.sonar.application.process.EsManagedProcess.checkStatus(EsManagedProcess.java:92)
at org.sonar.application.process.EsManagedProcess.checkOperational(EsManagedProcess.java:77)
at org.sonar.application.process.EsManagedProcess.isOperational(EsManagedProcess.java)
at org.sonar.application.process.ManagedProcessHandler.refreshState(ManagedProcessHandler.java:223)
at org.sonar.application.process.ManagedProcessHandler$EventWatcher.run(ManagedProcessHandler.java:288)
Caused by: java.lang.InterruptedException: null
at java.base/java.lang.Object.wait(Native Method)
at java.base/java.lang.Object.wait(Object.java:366)
at java.base/java.lang.Object.wait(Object.java:359)
at org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:82)
at org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:70)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:296)
12 common frames omitted
2024.02.22 12:36:09 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped

解决方案建议

1. 查看Elasticsearch专属日志

SonarQube内置的Elasticsearch有独立日志目录:D:\ISO\sonarqube-10.4.0.87286\sonarqube-10.4.0.87286\logs\es\,里面的日志会明确记录启动失败的具体原因(如内存不足、端口被占、权限不足等),这是排查的核心依据。

2. 调整Elasticsearch内存配置

打开sonarqube-10.4.0.87286\conf\sonar.properties,找到以下配置项,根据服务器物理内存调整:

sonar.search.javaOpts=-Xmx512m -Xms512m

若服务器内存充足,可适度调高(例如-Xmx1024m -Xms1024m),但不要超过物理内存的50%。

3. 检查端口占用情况

Elasticsearch默认使用9001端口,执行以下命令排查是否被其他进程占用:

netstat -ano | findstr :9001

若被占用,可终止对应进程,或修改sonar.properties中的sonar.search.port配置更换端口。

4. 以管理员权限运行启动脚本

右键点击startsonar.bat,选择以管理员身份运行——Windows Server的权限限制可能导致Elasticsearch无法创建文件或绑定端口。

5. 验证Java版本兼容性

SonarQube 10.4要求Java 17,执行以下命令确认版本符合要求:

java -version

若版本不符,安装对应版本的OpenJDK(推荐Adoptium或Oracle OpenJDK),并确保JAVA_HOME环境变量指向正确路径。

6. 临时关闭防火墙/杀毒软件测试

Windows Defender或第三方杀毒软件可能拦截Elasticsearch的网络请求,临时关闭后重新启动SonarQube,排查是否为拦截问题。

7. 清理残留文件后重新初始化

除删除/data/es8外,可一并删除/temp和/logs目录下的旧文件,再尝试启动。

内容的提问来源于stack exchange,提问作者Muyiwa Aniyikaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:44:50