web-dev-qa-db-ja.com

Ubuntuでデーモンとして実行しているJenkinsにヒープ領域を増やすにはどうすればよいですか?

Jenkinsのジョブがメモリ不足になり、ビルドログにJava.lang.OutOfMemoryErrorメッセージが表示されます。しかし、JenkinsをインストールするためにUbuntuパッケージマネージャー、aptitude、またはapt-getを使用しましたが、Jenkinsに割り当てられたヒープスペースの量を変更する場所はわかりません。

41
Steve HHH

Jenkinsジョブの実行中に発生する可能性のあるOutOfMemoryErrorメッセージには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を別のものに置き換えます。永続世代ヒープには、ユーザークラスに関するメタ情報が保持されます。

たとえば、この抽出は、Jenkinsの新規インストール後のデフォルトの/etc/default/jenkinsからのものです。

# arguments to pass to Java
#Java_ARGS="-Xmx256m"

これは、ヒープスペースを1 GBに設定した場合の外観です。

# 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

68
Steve HHH

CentOSの場合、Jenkins.xmlがデフォルトで配置されるディレクトリは、jenkins-1.579-1.1の場合は/ etc/sysconfig /です。

JENKINS_Java_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="

27
AvianFLU

Ubuntu Serverを使用している場合は、まず Monitoring プラグインをインストールして、Jenkinsが使用しているメモリ量を確認します。たとえば、これはインストール後に見たものです。

enter image description here

次に、コマンドfree -mを使用して、サーバーのメモリサイズを把握しました。私の場合、16Gb。その情報で、私は/etc/default/jenkinsを開き、変更しました:

Java_ARGS="-Djava.awt.headless=true"

Java_ARGS="-Xmx8384m -Djava.awt.headless=true"

8384は8Gbです。その後、コマンドSudo service jenkins restartを使用してJenkinsを再起動し、メモリの問題が発生しているジョブをトリガーした後、状況は非常に良くなり、ジョブはこれ以降の実行で完了することができました。

enter image description here

12
Juampy NR