2012-06-21 5 views
15

私はJenkinsの失敗のケースがあり、Jenkinsの再展開以外は何もしませんでした(JenkinsはTomcatのWebアプリケーションです)。 PermGenのスペースエラーでは新しいジョブでも失敗しましたが、すべての設定は問題ありませんでした(すべてのこれらのパラメータはどこでも可能です)。ポイントは再展開後すべてが魅力的だった。しかし、それは厳しい解決策です。私は、Jenkinsの状態をロールバックするオプションがあるかどうかを知りたかったのです。前もって感謝します。JenkinsのPermGenエラー

更新:そうですね、そういう人に直面するかもしれない、ここで私が考え出したのはここです。 JenkinsをTomcatモジュールとしてデプロイする方が良いと書いた人は、Jenkins DeployプラグインやMavenのpom.xmltomcat-maven-pluginを使って、どんな種類のプロジェクト配備の問題にも直面しなかったでしょう。 Jenkinsを別途インストールしたときに私が説明した問題はありませんでした。すごい!

+0

あなたはubuntuで動作していますか?もしそうなら、/ etc/default/tomcat設定を上書きする必要があります。さもなければ、permgenspaceの問題に悩まされていないJrockit JVMでtomcatを実行しようとする可能性があります。 – jocelyn

+0

@jocelynうん、それはUbuntuだから、その設定を無効にしようとした。 Jrockitは解決策かもしれませんが、JenkinsのためにJVMを変更するのはちょっと変です。 –

答えて

6

私はかつて同じようなエラーを経験しました。ジェンキンズは確かなテストの実行を含むmavenビルドを実行していました。私が使っていたMavenのバージョン(V2のもの)が私のJVMメモリオプションを確実なプロセスフォークに渡していないことを発見しました。このためいくつかのテストに失敗しました。 MAVEN_OPTS、JAVA_OPTS、何も動作しませんでした。

私は、settings.xmlに直接メモリオプションを渡してしまい、PermGenのエラーはなくなりました。

ここで私が使用されるオプションは、(アプリはかなり大きかった)、次のとおりです。

-Xms512m -Xmx1024m -XX:PermSizeを= 512メートル-XX:MaxPermSizeを= 1024メートル

+1

ありがとう、おそらく私はそれを必要とするでしょうが、私のケースでは、PermGenはいつもテストに何か他のものを実行するのではなく、最初に現れました。 –

4

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

少なくとも、-XX:+CMSClassUnloadingEnabledは、根本的な問題が、TomcatインスタンスのPermGenスペースで不必要にクラスが維持されていることが原因で起こっていることを前提としています。

+0

ありがとう、私はそれを試みた。私は解決策を見つけました。更新を参照してください。 –

34

本当にPermGenスペース・エラーのために重要な一つの設定がある(そしてそれは、この正確でなければなりません):

-XX:MaxPermSize=512m 

一つダッシュ、ビッグXS、ビッグ-M、BIG- P、Big-S、スペースなし、サイズインメグ、小文字 m。あなたがそれをねじ込むなら、それは無視されます。 PermGenのすべての修正の99%は、誰かが指示に正確に従わず、少しmの代わりにメガバイトを使用したか、または1つの代わりに2つのダッシュ例。

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

+7

"** **ダッシュ** ** 2つのビッグX、ビッグM、ビッグP、ビッグS、スペース無し、サイズイン・メグ"は私を笑ってくれました! –

0

私はバンプを発見しましたJREJava 8助けました。デフォルトでは、Jenkinsはjenkins.xmlタスクによって呼び出されるホームフォルダの下にJREを使用します。

関連する問題