Windows Server 2016重启后SonarQube无法启动求助
解决Windows Server 2016重启后SonarQube无法启动的问题
从你提供的日志来看,核心问题是Web进程意外退出(退出码0)——这通常不是程序崩溃,而是启动过程中遇到了权限、资源或配置类的问题。结合Windows Server环境,给你几个针对性的排查和解决步骤:
1. 检查SonarQube目录的权限
Windows重启后,运行SonarQube的服务账户(默认可能是Local System)可能丢失了对SonarQube安装目录的访问权限:
- 右键点击SonarQube安装根目录(比如
C:\sonarqube\sonarqube-6.7.3),选择「属性」→「安全」 - 找到运行SonarQube的用户(如果是服务,检查服务的登录账户),确保它拥有该目录及所有子目录的完全控制权限
- 应用权限后,重新尝试启动SonarQube
2. 调整Elasticsearch的内存配置
日志里看到Elasticsearch分配了2GB堆内存(-Xms2048m -Xmx2048m),重启后系统内存可能紧张导致ES启动异常,进而影响Web进程:
- 打开
C:\sonarqube\sonarqube-6.7.3\conf\sonar.properties文件 - 找到
sonar.search.javaOpts配置项,修改为:sonar.search.javaOpts=-Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true - 保存后重启SonarQube服务
3. 手动启动查看实时报错
当前web.log只记录到Netty初始化阶段,没有后续日志,建议手动启动SonarQube查看控制台输出:
- 打开命令提示符(以管理员身份运行)
- 切换到SonarQube的bin目录:
cd C:\sonarqube\sonarqube-6.7.3\bin\windows-x86-64 - 运行
StartSonar.bat,观察控制台的实时输出,这会暴露日志文件没捕获到的启动错误(比如数据库连接失败、配置文件错误等)
4. 检查端口占用情况
重启后可能9000(SonarQube Web端口)或9001(Elasticsearch端口)被其他程序占用:
- 打开命令提示符,运行:
netstat -ano | findstr :9000 netstat -ano | findstr :9001 - 如果有结果,记下PID,打开任务管理器找到对应进程并结束,或者修改SonarQube的端口配置(在
sonar.properties里修改sonar.web.port和sonar.search.port)
5. 验证Java环境变量
SonarQube 6.7.3要求Java 8,你当前用的jdk1.8.0_171是兼容的,但重启后环境变量可能异常:
- 打开命令提示符,运行
java -version和echo %JAVA_HOME%,确保输出的Java版本是1.8,且JAVA_HOME指向JDK根目录(不是JRE) - 如果
JAVA_HOME配置错误,修改系统环境变量后重启SonarQube
内容的提问来源于stack exchange,提问作者a.reymann
相关产品推荐
相关产品推荐

