SonarQube 以 143 退出

Posted

技术标签:

【中文标题】SonarQube 以 143 退出【英文标题】:SonarQube exits with 143 【发布时间】:2018-08-14 03:40:54 【问题描述】:

我正在尝试在具有 6GB RAM 的 Centos 6 VM 上设置 SonarQube。进程总是以 143 退出。

在分析中,我发现 JVM 正在被发送一个 SIGTERM 信号并因此退出。没有核心转储,并且 dmesg 也非常无用。我还尝试摆弄内存选项无济于事。

如果有人可以帮助我调试此问题,那将非常有用。至少,我会知道为什么这个软件会被终止。

jvm 1    | 2018.03.06 15:32:59 INFO  app[][o.e.p.PluginsService] no modules loaded
jvm 1    | 2018.03.06 15:32:59 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
jvm 1    | 2018.03.06 15:33:07 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
jvm 1    | 2018.03.06 15:33:07 INFO  app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/home/sonar/sonar/sonarqube-7.0]: /opt/jdk1.8.0_161/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/home/sonar/sonar/sonarqube-7.0/temp -Xrs -Xmx4g -Xms4g -XX:+HeapDumpOnOutOfMemoryError -cp ./lib/common/*:./lib/server/*:/home/sonar/sonar/sonarqube-7.0/lib/jdbc/mysql/mysql-connector-java-5.1.42.jar org.sonar.server.app.WebServer /home/sonar/sonar/sonarqube-7.0/temp/sq-process3024208901604150849properties
jvm 1    | 2018.03.06 15:33:12 INFO  app[][o.s.a.SchedulerImpl] Process [web] is stopped
jvm 1    | 2018.03.06 15:33:12 INFO  app[][o.s.a.SchedulerImpl] Process [es] is stopped
jvm 1    | 2018.03.06 15:33:12 WARN  app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 143
jvm 1    | 2018.03.06 15:33:12 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper  | <-- Wrapper Stopped

【问题讨论】:

能否分享一下 web.log、ce.log 和 es.log 文件?您的问题的狂野客人:也许您正在使用 root 帐户,这是不可能的。 您的机器上可能没有足够的可用内存供其上运行的所有进程使用。有没有检查过SQ的ES进程没有被OOM Killer杀死:***.com/questions/624857/… 您解决了吗?我看到了同样的问题。我没有任何 OOM 进程杀手日志条目。 对于启动过程中遇到的任何错误(例如:数据库不可用),Sonarqube 似乎正在以代码 143 退出。您只需检查所有日志文件即可获得有关错误的详细信息(在我的情况下为:web.log)。 【参考方案1】:

在这里聚会有点晚了,但希望能有用。

Sonar 中的错误日志什么也没给我。对我来说,这个 143 退出代码是因为我在端口 9000 上运行了一些其他进程,这是默认的声纳端口。

进入conf/sonar.properties 并将端口编辑为其他内容,例如sonar.web.port=9009

然后重新启动您的服务器!

【讨论】:

【参考方案2】:

我需要更新我的mysql版本

SonarQube 支持 MySQL 5.6 和 5.7

检查您现有的版本号

mysql -u <username> -p
SELECT VERSION()

如果版本不是5.6或5.7,则卸载现有的mysql

sudo yum -y remove mysql

安装 MySQL 5.6

sudo yum localinstall http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm -y
sudo yum install mysql-community-server -y

启动 MySQL

sudo service mysqld start

【讨论】:

【参考方案3】:

对我来说,问题是无法从 Sonar 实例访问我的数据库。在 AWS 上,已经移动了实例(AMI、启动新实例等),需要通过 RDS 安全组允许它进入。

一旦我在 sonar-directory/logs/web.log 文件中发现异常,错误就很清楚了:

java.lang.IllegalStateException:无法连接到数据库。请检查连接和设置...

【讨论】:

【参考方案4】:

对我来说,问题是无法从 Sonar 实例访问我的数据库。在 AWS 上,已经移动了实例(AMI、启动新实例等),需要通过 RDS 安全组允许它进入。

【讨论】:

【参考方案5】:

检查您的/opt/sonarqube/conf/sonar.propeties,以下行:

sonar.jdbc.url=jdbc:postgresql://localhost/your_db_schema

例如,如果你在 PG 中插入这个

CREATE DATABASE db_sonarqube;
…
…
\q

你的行会是这样的:

sonar.jdbc.url=jdbc:postgresql://localhost/db_sonarqube

【讨论】:

【参考方案6】:

我遇到了同样的问题,结果发现我没有创建数据库。

创建数据库后,重启sonarqube,就ok了。

【讨论】:

【参考方案7】:

老问题,但答案仍然相关。 143的原因如下: * 您手动将插件 (.jar) 复制到 $SONAR_HOME/extensions/Plugins。 * 未经授权的插件 * 不兼容的插件。

【讨论】:

【参考方案8】:

我今天刚刚遇到这个问题,在检查 web.log ($SONARQUBE_HOME/sonarqube/logs) 后,记录了以下内容:

2019.02.28 15:47:38 INFO  web[][o.s.s.p.d.m.c.MssqlCharsetHandler] Verify that database collation is case-sensitive and accent-sensitive
2019.02.28 15:47:38 ERROR web[][o.s.s.p.Platform] Web server startup failed: Database collation must be case-sensitive and accent-sensitive. It is SQL_Latin1_General_CP1_CI_AS but should be SQL_Latin1_General_CP1_CS_AS.

一旦我修复了排序规则(在数据库设置期间错过了它),它就起作用了。希望这可以帮助遇到同样问题的其他人。

【讨论】:

【参考方案9】:

我遇到了 eaccmk 遇到的同样问题,但我意识到我的问题是我使用的是 SonarQube 7.6,而我本应使用 6.7.6 的长期支持版本

切换到 6.7.6 并将插件放在那里使代码成功启动而没有 143 错误。

【讨论】:

【参考方案10】:

我克服143 error 并使我的本地服务器正常运行的方法(http://localhost:9000):

我关注了这个https://medium.com/@agavatar/code-coverage-reports-in-sonarqube-for-swift-on-macos-49797b6a8fea

然后我开始收到错误 143 并且当我从 ...&lt;my-path&gt;./sonarqube-7.6/extensions/plugins 中删除 backelite-sonar-swift-plugin-0.4.2.jar

瞧!成功了

【讨论】:

我遵循相同的教程并遇到了同样的问题。但是,如果我们删除插件,它就达不到目的。如果我们不使用插件,我们应该如何进行快速分析? 我尝试下载LTS(长期支持):SonarQube 6.7.x 它对我有用 我试图启动 sonarqube Web 控制台,但总是收到 143 错误。当删除 backelite-sonar-swift-plugin-0.4.4.jar 时,它工作得很好。我从 7.9 开始使用 SonarQube 7.7 版本,它需要 java 11,我们的项目在 java 8 上工作【参考方案11】:

我也遇到过这种情况,但今天早上我设法治愈了。

对我来说,问题不是糟糕的 Elastic 系统配置、无效的数据库凭据,而且它没有被 OOM 杀手杀死。对我来说,问题是我们在扩展/插件文件夹中有“sonar-cfamily-plugin-5.1.10083.jar”,但我们没有使用它的许可证(我们是一家 Java 商店,我什至怀疑任何人试图运行它)。在 SonarQube 6.6 中,我们收到有关它未经许可的警告,但没有崩溃。在 6.7 以及 6.7.3 和 7.0 中,es 以 143 崩溃(我相信我们仍然收到警告,但由于它在我们的 6.6 日志中,我不认为这是一个问题。)

我发现了这一点,因为我尝试了“超级干净”安装(无插件)并且 SonarQube 7.0 保持不变;重新添加插件,es 崩溃了 143。CFamily 是我尝试删除的第一个插件(因为我们并没有真正使用它)并且 SonarQube 保持不变。

我还没有回到 6.7 来查看删除 unlicenses cfamily 插件是否也会清除那里的 ES 143 出口,但是如果您遇到这个令人抓狂的错误并且没有其他建议适用于您,这可能是要看的东西。至少,可以尝试删除所有插件并查看 SonarQube 是否正确启动;然后将它们一一添加,直到找到引入 ES 143 退出问题的那个。

【讨论】:

以上是关于SonarQube 以 143 退出的主要内容,如果未能解决你的问题,请参考以下文章

代码质量SonarQube原理与实践

容器以非零退出代码 143 退出。被外部信号杀死

将 JUnit 报告推送到 Sonarqube

sonarqube+sonar_scanner+jenkins执行代码检查

sonarqube+sonar_scanner+jenkins执行代码检查

AWS-EMR 错误退出代码 143