web-dev-qa-db-ja.com

JenkinsのPermGenエラー

Jenkinsに障害が発生したケースがあり、Jenkinsの再デプロイ(JenkinsはTomcatのWebアプリ)以外は役に立ちませんでした。新しいジョブでさえPermGenスペースエラーで失敗しましたが、すべての設定は問題ありませんでした(可能な限り、これらすべての-XX:PermSizeパラメーター)。重要なのは、再展開後、すべてが魅力のように機能したことです。しかし、それは厳しい解決策です。 Jenkinsの状態をロールバックするオプションがあるかどうかを知りたいと思いました。前もって感謝します。

更新:さて、そのようなことに直面するかもしれない人々のために、これが私が理解したことです。 JenkinsをTomcatモジュールとしてデプロイする方が良いと書いた人は、おそらくどのような種類のプロジェクトデプロイメントの問題にも直面していません(JenkinsDeployプラグインまたはMavenのTomcat-maven-pluginpom.xmlを使用)。 Jenkinsを個別にインストールしたときに説明した問題はありませんでした。ふぅ!

15
John Doe

PermGenスペースエラーで本当に重要な設定は次のとおりです(そして、これは正確にでなければなりません):

-XX:MaxPermSize=512m

1ダッシュ、2 Big Xs、Big-M、Big-P、Big-S、スペースなし、size-in-megs、小文字 m。あなたがそれを台無しにした場合、それは無視されます。すべてのPermGen修正の99%が「機能しない」のは、誰かが指示に正確に従わず、big-Mをlittle-mではなくメガバイトで使用したか、ダッシュを1つではなく2つ前に置いたためです。例。

また、512メガバイトは出発点にすぎません...システムに合わせて調整してください。

34
Matt Brock

私はかつて同様のエラーを経験しました:jenkinsは確実なテストの実行を含むMavenビルドを実行していました。私が使用していたバージョンのMaven(V2のもの)がJVMメモリオプションをsurefireプロセスフォークに渡さなかったことを発見しました。これが原因で一部のテストが失敗していました。 MAVEN_OPTS、Java_OPTS、どれも機能しませんでした。

結局、settings.xmlでメモリオプションを直接渡すことになり、PermGenエラーはなくなりました。

これが私が使用したオプションです(アプリはかなり大きかったです):

-Xms512m -Xmx1024m -XX:PermSize = 512m -XX:MaxPermSize = 1024m

6
Dominique Eav

完全にテストされていない提案ですが、 この回答 はTomcatを起動するときに_-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled_を使用することを提案しています(完全に異なるコンテキストでの問題ではありますが)。 この回答 ただし、Java 6ではCMSPermGenSweepingEnabledは不要であり、CMSClassUnloadingEnabledを有効にするには_-XX:+UseConcMarkSweepGC_を使用する必要があることを示しています。

少なくとも_-XX:+CMSClassUnloadingEnabled_は、根本的な問題が、TomcatインスタンスのPermGenスペースで不必要に維持されているクラスによって引き起こされていると想定してトリックを実行する可能性があります。

4
ig0774

多分この質問はあなたを助けることができます:

Windowsでサービスとして開始されたときに、Jenkinsにヒープスペースを増やすにはどうすればよいですか?

そこにはいくつかの非常に良い答えがあります。

1
Eduardo Andrade

JREJava 8にぶつけることが役に立ったことがわかりました。デフォルトでは、Jenkinsはjenkins.xmlタスクによって呼び出されるホームフォルダーの下のJREを使用します

0
Tim Prentice

LinuxのPermGenエラーをjenkins.confに追加することで解決しました:

wrapper.Java.additional.4=-XX:PermSize=1024M
0
Ahiaz Demri