Sonarqube 6.7.3升级后问题列表为空但数据已返回的求助
解决SonarQube 6.7.3升级后大项目Issue列表空显示问题
我之前帮团队排查过类似的SonarQube升级异常,结合你的环境(SonarQube 6.7.3、PostgreSQL 8.4.20、JDK 1.8.0_151、OEL 6.5 64位),这个“标题显示有x条问题但列表为空、控制台已收到数据”的情况,几乎都是大项目数据量触发的前端渲染瓶颈或后端/数据库性能不足导致的,小项目数据量小所以没暴露问题。下面是一步步的排查和解决思路:
1. 先查SonarQube日志找线索
首先去$SONAR_HOME/logs目录下翻这两个日志:
web.log:重点看有没有前端JS报错、内存溢出或者请求超时的记录——大项目加载大量Issue时,Web进程内存不够会直接导致渲染失败ce.log:检查Compute Engine有没有处理Issue数据时的异常,比如数据格式错误、任务超时等
2. 给SonarQube Web进程扩容内存
6.7.3默认的Web进程堆内存可能撑不住大项目的Issue列表渲染。编辑$SONAR_HOME/conf/sonar.properties,找到sonar.web.javaOpts参数,调整成更大的内存配置:
sonar.web.javaOpts=-Xmx2G -Xms1G -XX:+HeapDumpOnOutOfMemoryError
保存后重启SonarQube,再测试大项目的Issue页面——很多时候内存不够就是罪魁祸首。
3. 优化老版本PostgreSQL的性能
你的PostgreSQL是8.4.20,版本比较老旧,大项目的Issue查询容易因为数据库响应慢,导致前端等待超时或数据处理异常。可以做这些调整:
- 编辑
postgresql.conf:- 把
shared_buffers设为服务器内存的1/4(比如服务器8G内存就设为2G) - 增大
work_mem(比如设为64MB),提升复杂过滤查询的性能 - 调整
maintenance_work_mem(比如设为512MB)
- 把
- 执行
ANALYZE sonar;(假设Sonar的数据库名为sonar)更新数据库统计信息,让查询计划更高效
4. 前端层面的临时规避&验证
- 先在Issue过滤器里加更严格的条件:比如只看最近30天的问题、只选特定类型的漏洞,减少单次返回的数据量。如果列表能正常显示,就坐实了“数据量过大导致渲染失败”的猜测
- 清除浏览器缓存,或者用无痕模式打开页面——有时候升级后残留的旧JS缓存会导致渲染逻辑异常
5. 排查第三方插件兼容性
升级SonarQube后,如果你保留了旧版本的第三方插件,很可能出现兼容性问题,干扰前端渲染。可以先禁用所有非官方插件,重启SonarQube后测试Issue页面,再逐个启用插件排查哪个出问题。
内容的提问来源于stack exchange,提问作者dschettl
相关产品推荐
相关产品推荐

