2017-01-13 14 views
1

最近、生産サーバ:tomcat6が頻繁にハングアップし、次のエラー「java.lang.OutOfMemoryError:PermGen space」を投げています。これはWindows 2003サーバ4GBのRAMを搭載。 25アプリケーションがそのサーバーで実行されていて、オーバーロードされているように見えますが、それ以前に正常に動作していました。私は、DB接続を閉じる、JAVA_OPTSでヒープメモリを増やすなどのメモリリークを解決しようとしました。それでも私は正確な根本的な原因を見つけることができませんでした。またTomcat6はマネージャーアプリケーションで構成されていないため、メモリ/ヘルスチェックを実行できませんでした。これを解決するために私を案内してください。Tomcat6は頻繁にハングアップしています:java.lang.OutOfMemoryError:PermGen space

+1

PermGenは、最も一般的にクラス定義(および特定の古いXMLパーサーと、IIRC)に関連しています。 25種類のアプリケーションを実行しているので、PermGenスペースを明示的に割り当てることが必要な場合があります(おそらくそれぞれがさまざまなサポートライブラリのバージョンが少し異なります)。 http://stackoverflow.com/questions/3003855/increase-permgen-spaceを参照してください – Gus

答えて

1

あなたはPermGenスペース編集を増やす必要がありますJAVA_OPTSとオプションを使用してXX:MaxPermSizeを(例えば、-XX:MaxPermSize=1024m)。ヒープサイズ(Xmx)を増やすことは、あなたのケースでは役に立ちません。

私はまた、メモリの使用状況を調査し、必要に応じて、あなたのJAVA_OPTSを調整するGlowrootよう監視ツール(APM)の使用を示唆しています。 PermGenスペースとそのガベージコレクション機構の目的の詳細については

、この回答を見て:https://stackoverflow.com/a/5387423/3260495

+1

ありがとう@ロバート・ヒューム、しかし私はすでにJAVA_OPTSにMaxPermSizeを次のセット "JAVA_OPTS =%JAVA_OPTS%-Xms1024m -Xmx1024m -XX:MaxPermSize = 1024m -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled -server」を選択します。しかし、まだ問題がある、とにかくTomcatのインスタンスがMaxPermSizeを選択するかどうかを追跡する必要はありますか? APMは良いアイデアだと思っています。私はそれを試してみます – Vic

+0

Tomcat Managerを持っていないことを考慮して、 '-XX:+ PrintCommandLineFlags'引数を' JAVA_OPTS'に追加し、サーバを再起動して 'logs/catalina .out'ファイル: 'JAVA_OPTS'で指定したすべてのコマンドラインフラグを含む1行が表示されます。 –

+1

@ JAVA_OPTSにPrintCommandLine引数を加えても、@ Robert Humeに感謝します。ログに詳細が表示されません。ちょっと考えて、Tomcatが実行されているかどうかを調べる方法はありますか?たとえば、別のサーバーからpingして、Tomcatが応答していない場合(URLコンテンツモニターなど)サーバーがハングアップしている間に即座のアクションを得る – Vic

関連する問題