加载项目存储库时发生 SonarQube 5.1.1 读取超时错误

Posted

技术标签:

【中文标题】加载项目存储库时发生 SonarQube 5.1.1 读取超时错误【英文标题】:SonarQube 5.1.1 Read Timed out Error occurs while loading project repositories 【发布时间】:2015-10-04 01:48:50 【问题描述】:

在使用声纳运行器分析多模块项目时,我经常收到“读取超时”错误。我为 Jenkins 配置了 SonarQube 5.1.1。我们的项目是一种网络项目,我们有几个声纳插件用于分析,如 web、css、java、findbugs、js、xml 和 jacoco。如果我从浏览器加载给定的链接“http://172.21.145.84:9000/batch/project?key=webportal&preview=false”,它可以工作,但有时加载响应数据需要很长时间。任何人都可以就这次失败给我任何建议吗?我在下面分享了声纳日志。

SonarQube Runner 2.4
Java 1.7.0_45 Oracle Corporation (64-bit)
Windows 7 6.1 amd64
INFO: Runner configuration file: C:\sonar-runner-2.4\conf\sonar-runner.properties
INFO: Project configuration file: D:\Jenkins\jobs\Webportal_2.0_Drop1Branch\workspace\DataModel\..\ucfed_webportal_plugin_att\sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: D:\Jenkins\jobs\Webportal_2.0_Drop1Branch\workspace\DataModel\..\ucfed_webportal_plugin_att\.sonar
INFO: SonarQube Server 5.1.1
17:11:29.762 INFO  - Load global repositories
17:11:30.027 INFO  - Load global repositories (done) | time=281ms
17:11:30.042 INFO  - Server id: 20150707155744
17:11:30.042 INFO  - User cache: C:\Users\Administrator\.sonar\cache
17:11:30.042 INFO  - Install plugins
17:11:30.479 INFO  - Install JDBC driver
17:11:30.495 INFO  - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
17:11:32.538 INFO  - Initializing Hibernate
17:11:35.409 INFO  - Load project repositories
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 26.832s
Final Memory: 46M/303M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: Unable to request: /batch/project?key=webportal &preview=false
ERROR: Caused by: Read timed out
ERROR: 
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
Build step 'Invoke Standalone Sonar Analysis' marked build as failure
Extended Email Publisher is currently disabled in project settings
Finished: FAILURE

【问题讨论】:

【参考方案1】:

您面临以下限制,我们将在 SonarQube 5.2 中尝试解决:SONAR-6604

(我在票的描述中添加了对您帖子的引用)

请注意,您使用的是基于嵌入式 H2 数据库的默认安装,因此您不能期望有良好的性能。我想你一定注意到了页面底部的大红色警告。

【讨论】:

好的,那我就等5.2发布吧。 IMO,你应该先安装一个独立的数据库(mysql 或 Postgres 是免费的)。首先,它将解决您的问题。然后,您应该知道您将无法迁移数据,因为不支持使用嵌入式 H2 进行迁移。 SonarQube 5.2 已经发布(见release notes)【参考方案2】:

正如你所看到的错误与读取超时有关,这是由于它必须读取的项目很大。就我而言,我修改了配置文件的 sonar.jdbc.maxWait 值:/sonarqube-5.1.2/conf/sonar.properties

# The maximum number of milliseconds that the pool will wait (when there
# are no available connections) for a connection to be returned before
# throwing an exception, or <= 0 to wait indefinitely.
sonar.jdbc.maxWait=10000

当我执行此更改时,错误消失了。 祝你好运

【讨论】:

【参考方案3】:

事实证明,由于 SQL 查询结果集较大,我遇到了同样的问题。 将 sonar.jdbc.maxWait 增加到 300000 就可以了。 很大的帮助!非常感谢!

【讨论】:

【参考方案4】:

在长期使用 SonarQube 的过程中,通过牢记以下几点,我能够通过一些调整来解决上述问题。

提高硬件性能。 让系统仅运行 SonarQube。 每周重启一次声纳服务器。

会带来好的结果。

【讨论】:

【参考方案5】:

我在使用 Sonar 8.9.1 时遇到了类似的问题:

请求url失败:http://.../batch/project.protobuf?key=...: timeout: Read timed out

在我的情况下,问题是一个非常大的 Jacoco xml 覆盖文件。我通过增加 sonar.ws.timeout 参数as detailed in documentation 的默认值(60 秒)解决了这个问题。

【讨论】:

以上是关于加载项目存储库时发生 SonarQube 5.1.1 读取超时错误的主要内容,如果未能解决你的问题,请参考以下文章

删除github中的原始存储库时导入的存储库会发生啥

带有 MsBuild 的 SonarQube:sonar.cs.analyzer.projectOutPaths 不会为此项目加载任何 protobuf 文件

Sonarqube 5.6.6 中未加载某些页面

sonarqube连接数据库的作用是啥?

加载共享库时出错:libncurses.so.5:

当我推送到 GitHub 时如何处理秘密 API 密钥,以便在克隆存储库时我的项目仍然有效?