1

我们正在将我们的 SonarQube 从 4.5.X 升级到 5.6.X,计算引擎是一个新概念,并且在纸面上非常闪亮。但是当投入工作时,它的表现并不好!如果你成功了,请帮助我度过难关

我选择了一个使用 SonarQube 4.5.4 在 4 分钟内完成扫描的测试项目。现在使用(gradle)扫描仪进行的初始扫描需要 3 分钟。并且CE后台任务永远运行,在测试项目之外,第一个在183分钟内完成,另一个在263分钟内完成,第三个仍在运行。

显然我得到了挖掘并看到了这个stackoverflow问题-Sonarqube后台任务永远运行并增加了作为答案引用的内存,但它对我不起作用。

sonar.ce.javaOpts=-Xmx4096m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true
sonar.ce.workerCount=5

虽然工人数是 5,但我现在没有运行并行任务。从已完成工作的日志中,我可以看到一些令人震惊的时间信息!

2018.02.13 16:56:07 INFO  [o.s.s.c.s.ComputationStepExecutor] Compute complexity measures | time=335ms
2018.02.13 16:56:07 INFO  [o.s.s.c.s.ComputationStepExecutor] Load measure computers | time=6ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   Execution time for each component visitor:
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - LoadComponentUuidsHavingOpenIssuesVisitor | time=2483ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - IntegrateIssuesVisitor | time=15743879ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - CloseIssuesOnRemovedComponentsVisitor | time=0ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - QualityModelMeasuresVisitor | time=143ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - NewQualityModelMeasuresVisitor | time=73ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - LastCommitVisitor | time=4ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - MeasureComputersVisitor | time=25ms
2018.02.13 21:18:34 INFO  [o.s.s.c.s.ComputationStepExecutor] Execute component visitors | time=15746700ms
2018.02.13 21:18:37 INFO  [o.s.s.c.s.ComputationStepExecutor] Compute measure variations | time=3290ms
2018.02.13 21:18:37 INFO  [o.s.s.c.s.ComputationStepExecutor] Compute Quality Gate measures | time=54ms
2018.02.13 21:18:37 INFO  [o.s.s.c.s.ComputationStepExecutor] Compute Quality profile measures | time=25ms
2018.02.13 21:18:38 INFO  [o.s.s.c.s.ComputationStepExecutor] Generate Quality profile events | time=33ms
2018.02.13 21:18:38 INFO  [o.s.s.c.s.ComputationStepExecutor] Generate Quality gate events | time=6ms

执行组件访问者,特别是IntegrateIssuesVisitor花费大量时间,执行所需的总共 263 分钟中的 262 分钟。如何避免这种情况?

我没有看到任何跨项目分析禁用选项,它与此有关吗?

附加信息: 我使用 Oracle DB

[更新] 删除 CE 上的诅咒。我的错,CE很棒!现在部分项目3秒分析发布!!

4

1 回答 1

2

解决了!

正如 SonarQube Google 小组的讨论所指出的那样,它与数据库有关。

https://docs.sonarqube.org/display/PLUG/Managing+Compute+Engine+Performance,很明显 Compute Engine 性能与,

  • D B
  • 磁盘 I/O
  • 网络
  • 中央处理器

我们的内存消耗和 CPU 使用率总是最低的,所以我们立即排除了最后两个。但是我们还不知道出了什么问题,如果任何 CE 日志在各个方面都是无用的,因为日志级别没有应用于 CE 日志,那么你就是只有 INFO 没有 DEBUG 或 TRACE 级别的东西。我们还是得到了暗示,

INFO  [o.s.s.c.s.ExecuteVisitorsStep]   Execution time for each component visitor:
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - LoadComponentUuidsHavingOpenIssuesVisitor | time=58ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - IntegrateIssuesVisitor | time=41147606ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - CloseIssuesOnRemovedComponentsVisitor | time=1ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - QualityModelMeasuresVisitor | time=206ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - NewQualityModelMeasuresVisitor | time=119ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - LastCommitVisitor | time=6ms
INFO  [o.s.s.c.s.ExecuteVisitorsStep]   - MeasureComputersVisitor | time=29336ms

IntegrateIssuesVisitor 的执行时间非常长,日志信息量很大,为什么部分仍然是个谜。所以我们决定挖掘代码,感谢上帝,SonarQube 是开源的,但很快,或者 DBA 团队打电话给我们,为什么我们的查询表现如此糟糕。它卡住了我们,索引我们分析了 Sonar 的事务表,我们现在很好。

tl;dr :保持更新表统计信息,以便优化始终对您有利。分析表格。

于 2018-03-23T13:12:59.307 回答