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