Java

Jenkins 建構失敗並出現 OOM:無法創建新的本機執行緒

  • October 18, 2015

我正在使用 2GB RAM 的 VServer 上設置一個 jenkins 實例,並且沒有執行 CentOS 6.7 的其他任何東西(使用量 < 200MB)。

在上述實例上啟動 jenkins 建構時,jenkins 執行時總是出現此錯誤gradle --debug --stacktrace test

19:26:50.727

$$ ERROR $$ $$ org.gradle.BuildExceptionReporter $$引起:java.lang.OutOfMemoryError:無法創建新的本機執行緒

由於這似乎是不允許很多執行緒的情況,我將 ulimit 提高到:

$$ root@xxx $$# runuser -s / bin / bash jenkins -c ‘ulimit -u’ 16384

我還嘗試了不同的 jenkins JVM 記憶體分配標誌,給實例 200MB 或 1GB 沒有任何改變,降低堆棧大小以允許本地執行緒空間也沒有幫助。

當我以 root 身份執行相同的 gradle 命令時,gradle 掛起並出現類似錯誤:

19:29:14.939 [QUIET] [system.out] Error occurred during initialization of VM
19:29:14.940 [QUIET] [system.out] java.lang.OutOfMemoryError: unable to create new native thread
19:29:14.941 [QUIET] [system.out]       at java.lang.Thread.start0(Native Method)
19:29:14.941 [QUIET] [system.out]       at java.lang.Thread.start(Thread.java:714)
19:29:14.942 [QUIET] [system.out]       at java.lang.ref.Reference.&lt;clinit&gt;(Reference.java:187)

還有什麼我可以嘗試解決的嗎?

您需要增加 Gradle JVM 本身的堆大小,這不是從 Jenkins 配置繼承的。您可以使用GRADLE_OPTS環境變數在 Jenkins 中通過“管理 Jenkins > 配置系統 > 全域屬性 > 環境變數進行全域指定。您將添加一個GRADLE_OPTS具有適當設置的變數。您也可以在 Gradle 呼叫中通過在命令前添加前綴來執行此操作使用環境變數,例如:

GRADLE_OPTS="-Xmx256m" ./gradlew build

引用自:https://serverfault.com/questions/729796