CentOS 7下SonarQube 9.1运行报进程退出值[ce]:129错误如何解决?
问题根因分析
SonarQube所有子进程(ce/web/es)退出码为129、日志存在TERM trapped. Shutting down.,且web.log显示进程是正常优雅终止,没有内部业务报错,说明进程是被外部发送的SIGHUP/TERM信号主动终止,最常见的触发场景如下:
- 启动方式错误:通过SSH登录服务器后直接前台启动SonarQube,断开SSH会话时,系统会给该会话下的所有进程发送SIGHUP信号,导致进程终止
- 系统服务配置错误:如果配置了sonarqube.service但参数错误,会被systemd主动终止
- 系统资源不足:可用内存低于SonarQube最低要求,触发OOM killer终止进程
- 权限/资源限制不满足:SonarQube运行用户的打开文件数、进程数限制过低,触发进程异常退出
排查步骤
- 执行
dmesg | grep -i kill检查是否存在OOM killer终止进程的日志 - 执行
journalctl -u sonarqube.service(已配置系统服务的场景)查看服务运行日志,确认是否有服务异常触发的终止记录 - 检查es.log、ce.log两个日志文件,确认是否存在未捕获的组件内部报错
- 执行
free -h查看服务器可用内存,SonarQube 9.1最低要求2G以上可用内存,生产环境建议不低于4G - 执行
su - sonar用户 -c "ulimit -n -u"检查运行用户的资源限制,要求打开文件数不低于65536,进程数不低于4096
解决方案
方案1:配置systemd系统服务(生产环境推荐)
该方式可以保证SonarQube后台常驻运行,断开SSH会话不会终止,异常退出时自动重启:
- 新建服务配置文件
/etc/systemd/system/sonarqube.service,内容如下,注意替换实际安装路径和运行用户:
[Unit] Description=SonarQube service After=syslog.target network.target [Service] Type=forking ExecStart=/你的SonarQube安装路径/bin/linux-x86-64/sonar.sh start ExecStop=/你的SonarQube安装路径/bin/linux-x86-64/sonar.sh stop User=你的运行SonarQube的普通用户名 Group=你的运行SonarQube的普通用户组 Restart=always LimitNOFILE=65536 LimitNPROC=4096 [Install] WantedBy=multi-user.target
- 加载配置并启动服务:
systemctl daemon-reload systemctl enable --now sonarqube
方案2:临时后台运行(测试场景使用)
如果仅做临时测试,可以使用nohup命令启动,避免SSH断开影响:
cd SonarQube安装路径/bin/linux-x86-64 nohup ./sonar.sh start &
其他问题修复
- 如果排查为OOM问题:升级服务器内存,或者修改
conf/sonar.properties文件,调整三个组件的JVM内存参数,例如:
sonar.web.javaOpts=-Xmx1G -Xms512m sonar.ce.javaOpts=-Xmx1G -Xms512m sonar.search.javaOpts=-Xmx1G -Xms1G
- 如果排查为资源限制问题:修改
/etc/security/limits.conf文件,添加如下配置后重启服务器生效:
你的SonarQube运行用户名 soft nofile 65536 你的SonarQube运行用户名 hard nofile 65536 你的SonarQube运行用户名 soft nproc 4096 你的SonarQube运行用户名 hard nproc 4096
内容的提问来源于stack exchange,提问作者Alexei
相关产品推荐
相关产品推荐

