Java
Jenkins 建構失敗並出現 OOM:無法創建新的本機執行緒
我正在使用 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.<clinit>(Reference.java:187)
還有什麼我可以嘗試解決的嗎?
您需要增加 Gradle JVM 本身的堆大小,這不是從 Jenkins 配置繼承的。您可以使用
GRADLE_OPTS
環境變數在 Jenkins 中通過“管理 Jenkins > 配置系統 > 全域屬性 > 環境變數進行全域指定。您將添加一個GRADLE_OPTS
具有適當設置的變數。您也可以在 Gradle 呼叫中通過在命令前添加前綴來執行此操作使用環境變數,例如:GRADLE_OPTS="-Xmx256m" ./gradlew build