繁体   English   中英

詹金斯 Maven 构建 137 错误

[英]Jenkins Maven Build 137 Error

我有一个 Maven 项目,它在 Jenkins 中构建了 6 个独立的 Maven 项目。 我面临的问题是,随着时间的推移,项目构建失败并给出 137 错误代码:

错误:Maven JVM 意外终止,退出代码为 137

该项目可以在控制台中使用相同的 Maven 目标成功构建,但在 Jenkins 中它失败了。 通过重新启动 Jenkins,可以解决问题。

我有一些静态数组列表。 这些列表用于一些测试用例。 这可能是内存泄漏吗?

我在我们的构建服务器上遇到了相同的行为。 恕我直言,错误与 maven 内存设置(即MAVEN_OPTSMAVEN_OPTS ,而是与底层(Linux)机器本身(Jenkins 在其上运行)的内存相关。

(被拒绝的)Jenkins 问题https://jenkins-ci.org/issue/12035提供了有关此问题的更多详细信息:

作为参考,状态代码 137 (128 + 9) 通常意味着(可能因 unix 的不同而不同)。 该过程因收到信号而终止。 在这种情况下,信号 9 是 SIGKILL 和不可阻止的杀死。

如果是这种情况,底层机器/操作系统需要更多的虚拟内存 这可以通过适当地添加物理内存或交换空间来添加。

您应该尝试增加机器的虚拟内存。

笔记:
这也解释了为什么 Jenkins 重启(暂时)解决了这个问题。

我相信你应该增加内存设置的值 - 在 Jenkins 机器上的MAVEN_OPTS ,例如

MAVEN_OPTS=-Xmx1.5G -XX:MaxPermSize=0.7G 

如果您的机器至少有 2 个处理器和 4GB 内存,那么您的 JVM 不仅会在启动时占用 1GB,还会转为 -server 模式,这意味着为了性能将保留内存( 来源)。 如果您同时运行的 JVM 很少(多个应用程序组件、maven 构建等),您很容易进入低内存状态。 你们中的一个 JVM 可能会被Linux OOM Killer杀死,因为您机器上的资源不足。

减少jvm 默认 Xmx直接影响的进程的内存占用,这很可能与 jvm 实际需要的相差甚远。

给它额外的 java 命令行选项

-Xmx256m -XX:MaxPermSize=512m

或配置系统变量

MAVEN_OPTS=-Xmx256m -XX:MaxPermSize=512m

MaxPermSize 对 java 8+ 没有用

通过 Jenkins 运行 Maven 时出现此错误:

ERROR: Maven JVM terminated unexpectedly with exit code 137

我不小心在 MAVEN_OPTS 参数中放了一个“和”:

-Xmx1024m and -Xms1024m

然后,我收到了这个错误:

Error: Could not find or load main class and
ERROR: Failed to launch Maven. Exit code - 1

之后,删除“和”,我重新运行詹金斯并收到此错误:

java.lang.OutOfMemoryError: Java heap space

最后,我使用 Global MAVEN_OPTS 增加了内存:

-Xmx4096m -Xms4096m

这解决了问题。 所以,这似乎与记忆有关。 但是,它可能是与机器/VM 相关的问题(如上面@boskoop 所述)或容器问题(如果 JVM 通过 Jenkins/Docker/等运行)。

我遇到了相同的错误代码。 这个错误代码似乎确实与 Jenkins 环境中的 JVM 资源限制有关。 我建议在错误发生后第二次重新运行构建以查看是否可以获得额外/不同的输出,尽管这肯定取决于构建的哪一部分导致资源问题(在我的原因中它是一个 Maven 下载)。

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fb7cb000, 7331840, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 7331840 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /vagrant/args4java/hs_err_pid10470.log
ERROR: Maven JVM terminated unexpectedly with exit code 1
Finished: FAILURE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM