Jenkinsジョブのメモリが不足しているため、ビルドログにjava.lang.OutOfMemoryError
メッセージが表示されます。しかし、Ubuntu Package Manager、、aptitude
またはapt-get
を使用してJenkinsをインストールしましたが、Jenkinsに割り当てられたヒープスペースの量をどこで変更すればよいかわかりません。
4 に答える
OutOfMemoryError
Jenkinsジョブの実行中に発生する可能性のあるメッセージには次の2種類があります。
java.lang.OutOfMemoryError: Heap space
–これは、デーモンの起動時にJenkinsに割り当てられるヒープスペースの量を増やす必要があることを意味します。java.lang.OutOfMemoryError: PermGen space
–これは、Javaオブジェクトのメタデータを格納するために割り当てられる生成スペースの量を増やす必要があることを意味します。パラメータの値を増やしても、-Xmx
このエラーには影響しません。
Ubuntu 12.04 LTSでは、次のJAVA_ARGS
10行目の設定のコメントを解除し/etc/default/jenkins
ます。
- Javaヒープスペースを追加するには、
-Xmx
Javaパラメーターの値を増やします。これにより、メモリ割り当てプール(ガベージコレクションされたヒープ)の最大サイズが設定されます。 - PermGenスペースをさらに追加するには、パラメーターを追加します(さらに必要な場合は、別のものに
XX:MaxPermSize=512m
置き換えます。永続生成ヒープは、ユーザークラスに関するメタ情報を保持します。512
たとえば、この抽出は、/etc/default/jenkins
Jenkinsの新規インストール後のデフォルトからのものです。
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
ヒープスペースを1GBに設定すると、次のようになります。
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
ヒープサイズを大きく設定しすぎないように注意してください。割り当てるものによって、オペレーティングシステムやその他のプログラムで使用できるメモリの量が減り、過剰なページングが発生する可能性があります(RAMとスワップディスク間でメモリが交換され、速度が低下します)。システムがダウンしています)。
も設定する場合MaxPermSpace
は、パラメータ間にスペースを追加する必要があります):
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
変更を加えた後、Jenkins WebインターフェイスからJenkinsを正常に再起動するか、コマンドラインから。を使用してすぐに再起動しsudo /etc/init.d/jenkins restart
ます。
次のサイトは、Javaの最大および永続的な生成ヒープサイズを理解するのに役立ちます:http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html。
CentOSの場合、Jenkins.xmlがデフォルトで配置されているディレクトリは、jenkins-1.579-1.1の場合は/ etc /sysconfig/です。
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
Ubuntu Serverを使用している場合は、最初にMonitoringプラグインをインストールして、Jenkinsが使用しているメモリの量を確認します。たとえば、これは私がそれをインストールした後に見たものです:
次に、コマンドをfree -m
使用して、サーバーのメモリサイズを把握しました。私の場合、16Gbです。その情報を使って、私は開い/etc/default/jenkins
て変更しました:
JAVA_ARGS="-Djava.awt.headless=true"
に
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
ここで、8384は8Gbです。次に、コマンドを使用してJenkinsを再起動し、sudo service jenkins restart
メモリの問題が発生しているジョブをトリガーした後、状況ははるかに良くなり、この実行と後続の実行でジョブを完了できました。
特定のジョブのヒープサイズを設定する別の方法は、各ジョブに環境変数を使用することです。これにより、より高いメモリを必要とするジョブが使用されていないときにメモリを使用できるようになります。
GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xms1024M -Xmx8192M -XX:PermSize=512M -XX:MaxPermSize=2048 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"
JAVA_OPTS="-XX:MaxPermSize=2048M"