SonarQube 后台任务运行超过 4 小时
SonarQube background tasks runs past 4 hour
我们正在将我们的 SonarQube 从 4.5.X 升级到 5.6.X,计算引擎是一个新概念并且在纸上非常闪亮。 但是当投入使用时,它的性能并不好!如果你成功了,请帮助我度过难关
我选择了一个用SonarQube 4.5.4扫描不到4分钟的测试项目。现在,使用 (gradle) 扫描仪进行的初始扫描需要 3 分钟。而且CE后台任务一直跑,测试项目外,第一个183分钟完成,第二个263分钟,第三个还是运行.
显然,我进行了挖掘并看到了这个 Whosebug 问题 - 并增加了作为答案引用的内存,但它对我不起作用。
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 数据库
[更新] 删除了 CE 上的诅咒。我的错,CE 太棒了!现在有的项目3秒分析发布!!
已解决!
它与数据库有关,正如 SonarQube Google 组的讨论所指出的那样。
来自https://docs.sonarqube.org/display/PLUG/Managing+Compute+Engine+Performance,
很明显,Compute Engine 性能与
相关
- DB
- 磁盘I/O
- 网络
- 堆
- CPU
我们的内存消耗和 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 团队打电话给我们为什么我们的查询表现如此糟糕。它让我们陷入困境,indexes 我们分析了 Sonar 的交易 tables,我们现在很好。
tl;dr:保持您的 table 统计数据更新,以便优化始终对您有利。分析 tables.
我们正在将我们的 SonarQube 从 4.5.X 升级到 5.6.X,计算引擎是一个新概念并且在纸上非常闪亮。 但是当投入使用时,它的性能并不好!如果你成功了,请帮助我度过难关
我选择了一个用SonarQube 4.5.4扫描不到4分钟的测试项目。现在,使用 (gradle) 扫描仪进行的初始扫描需要 3 分钟。而且CE后台任务一直跑,测试项目外,第一个183分钟完成,第二个263分钟,第三个还是运行.
显然,我进行了挖掘并看到了这个 Whosebug 问题 -
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 数据库
[更新] 删除了 CE 上的诅咒。我的错,CE 太棒了!现在有的项目3秒分析发布!!
已解决!
它与数据库有关,正如 SonarQube Google 组的讨论所指出的那样。
来自https://docs.sonarqube.org/display/PLUG/Managing+Compute+Engine+Performance, 很明显,Compute Engine 性能与
相关- DB
- 磁盘I/O
- 网络
- 堆
- CPU
我们的内存消耗和 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 团队打电话给我们为什么我们的查询表现如此糟糕。它让我们陷入困境,indexes 我们分析了 Sonar 的交易 tables,我们现在很好。
tl;dr:保持您的 table 统计数据更新,以便优化始终对您有利。分析 tables.