web-dev-qa-db-ja.com

JenkinsビルドがOOMで失敗する:新しいネイティブスレッドを作成できません

2GB RAMで、CentOS 6.7を実行している他の何も実行していない(使用量<200MB))VServerにjenkinsインスタンスをセットアップしています。

上記のインスタンスでjenkinsビルドを開始すると、jenkinsを実行すると常にこのエラーが発生しますgradle --debug --stacktrace test

19:26:50.727 [エラー] [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)

これを修正するために他に何かできることはありますか?

1
reggaemuffin

GradleJVM自体に与えられるヒープサイズを増やす必要があります。これはJenkins構成から継承されません。これは、GRADLE_OPTS環境変数を使用して、Jenkinsで[Jenkinsの管理]> [システムの構成]> [グローバルプロパティ]> [環境変数]を使用してグローバルに指定できます。適切な設定でGRADLE_OPTS変数を追加することもできます。コマンドの前に環境変数を付けて、Gradle呼び出しでこれを行います。例:

GRADLE_OPTS="-Xmx256m" ./gradlew build
1
Will Hogan