SonarQube 6.7.5扫描期间几乎使用所有内存的Oracle DB服务器

时间:2018-11-28 23:33:29

标签: java database oracle memory sonarqube

将Sonar 6.7.5与JDBC连接使用到Oracle 12c。驱动程序版本为12.2.0.1.0。 Java JDK 1.8.0_111。

运行mvn sonar:sonar,使用适当的开关仅指定源代码的一小部分,因为有时需要分钟来处理每个文件,并且这可能是由于数据库服务器内存使用率为96%。大部分代码编写得很不好(复杂的遗留代码,有很多贡献者和很多问题),这无济于事。

您建议我在哪里看?我尝试使用SQLDeveloper工具来监视活动,但未注册任何内容。 Oracle DB与运行SonarQube的服务器不在同一服务器上。

这是在无法复制文件的系统上,但是可以根据需要转录Java内存设置或其他数据。另请告知我可以检查的日志文件。

SonarQube管理页面上的其他数据:

Compute Engine JVM状态

最大内存= 1963MB

可用内存= 1649MB

平均系统负载= 146.0%(top显示的CPU较高,但不是那么高) 工人人数= 1

我应该turn off some rules看看是否有帮助?

1 个答案:

答案 0 :(得分:0)

在6.7中,分析运行器没有与数据库的直接连接,因此,对数据库的调整不会对处理每个文件的分钟问题产生任何影响。

我认为,SonarJava扫描程序很难解析复杂的文件,因为这些文件会使符号执行引擎(例如空指针取消引用检测规则)难以使用。如果可以的话,我建议您在功能更强的计算机上运行分析作业-更多的CPU,更多的内存分配给Maven运行程序。

在质量配置文件中禁用规则也有帮助,特别是如果其中一些规则与您的代码库现在不相关时。对您的团队采用渐进的增强方法来提高代码质量可能会有所帮助:从高严重性,高影响规则的子集开始,专注于修复漏洞(即避免引入新的错误)并重构现有代码以降低认知复杂性,然后稍后再启用其他规则来提高标准。