SonarQube服务运行正常但9000端口连接被拒绝求助
SonarQube服务显示运行但9000端口无法访问
环境信息
- SonarQube服务器IP:
172.16.36.68 - PostgreSQL服务器IP:
172.16.36.74 - SonarQube服务状态:active (running)
- PostgreSQL服务状态:active (running)
- 已确认数据库连接正常(curl可连接5432端口)
问题现象
执行curl -v http://172.16.36.68:9000或curl localhost:9000均返回连接拒绝:
[admin@rockytm ~]$ curl -v http://172.16.36.68:9000 * Trying 172.16.36.68:9000... * connect to 172.16.36.68 port 9000 failed: Connection refused * Failed to connect to 172.16.36.68 port 9000: Connection refused * Closing connection 0 curl: (7) Failed to connect to 172.16.36.68 port 9000: Connection refused
当前配置
SonarQube核心配置(/opt/sonarqube/conf/sonar.properties)
sonar.jdbc.username=sonar sonar.jdbc.password=[pass_for_sonar] sonar.jdbc.url=jdbc:postgresql://172.16.36.74:5432/sonardb
防火墙规则
- SonarQube服务器已开放9000/tcp、5432/tcp端口
- PostgreSQL服务器已开放5432/tcp端口,并添加了允许SonarQube服务器访问的富规则
排查步骤
1. 检查SonarQube是否监听9000端口
执行命令确认端口监听状态:
ss -tulpn | grep ":9000" # 或查看Java进程监听的所有端口 netstat -tulpn | grep java
若无输出,说明SonarQube未成功绑定9000端口,需排查启动日志。
2. 查看SonarQube启动日志
检查/opt/sonarqube/logs目录下的关键日志:
web.log:Web服务启动细节,重点看端口绑定失败、数据库初始化报错等信息sonar.log:服务启动主日志,记录整体流程异常es.log:内置Elasticsearch日志,ES启动失败会导致Web服务无法正常启动
3. 确认SonarQube运行用户权限
SonarQube禁止以root用户运行,检查systemd服务配置(/etc/systemd/system/sonar.service):
[Service] User=sonar Group=sonar
同时确保/opt/sonarqube目录权限正确:
chown -R sonar:sonar /opt/sonarqube
4. 检查系统资源限制
SonarQube需要足够的文件描述符和进程数,在/etc/security/limits.conf中添加或确认:
sonar soft nofile 65536 sonar hard nofile 65536 sonar soft nproc 4096 sonar hard nproc 4096
修改后重启服务:
systemctl daemon-reload systemctl restart sonar
5. 验证端口是否被占用
检查9000端口是否被其他进程占用:
lsof -i :9000
若有占用,停止对应进程或修改SonarQube端口(在sonar.properties中设置sonar.web.port=9001)。
6. 确认SonarQube绑定地址
检查sonar.properties中的绑定地址配置,确保允许外部访问:
sonar.web.host=0.0.0.0
修改后重启SonarQube服务。
内容的提问来源于stack exchange,提问作者sens
相关产品推荐
相关产品推荐

