2009-04-03 11 views
16

私は非常にまともな量のドメインオブジェクトの作成と破壊を行うGrailsアプリケーションを手に入れました。非常に速い速度でPermGen空間を使い果たしているようです。私はいつもの調整を行った(PermGenを256Mにぶつけ、クラスGCを有効にしたなど)、サイコロはしなかった。Grails/Groovyメモリリークのトラブルシューティング

GroovyやJavaのこの種のメモリー消費をトラブルシューティングするためのツールをお勧めしたいと思いますか?または、JVMのメモリ問題のトラブルシューティングに使用するいくつかのテクニックですか?

編集:これは、アプリケーションが運用モードでTomcatの内部にデプロイされている場合です。私は他の容器で試したことはありません。それでも、問題を突き止めるためのリソースがあればうれしいでしょう。

+2

?私たちは検索可能なファイルとクォーツファイル(他のプラグインの中でも)を使用しており、ほとんどのリクエストでPERMGENのスペース使用量が増加しています。 – hvgotcodes

答えて

1

YourKitは、私がメモリの問題を診断するために複数回使用した素晴らしいツールです。これは商用ですが、ワンショットデバッグ用の無料の評価版があります。

1

開発中または生産中に問題が発生していますか?

開発中の場合、Grailsはアプリケーションのさまざまな側面を常に再コンパイルしています(ドメインの変更だけでなく、コントローラの変更や他のクラスも)。私もPermGenの問題を抱えていますが、そのほとんどは私が取り組んでいるファイルの安定した再コンパイルによって引き起こされます。この機能を無効にすることができます

http://www.grails.org/FAQ#Q:%20OMG%20I%20get%20OutOfMemoryErrors%20or%20PermGen%20Space%20errors%20when%20running%20Grails%20in%20development%20mode.%20What%20do%20I%20do

生産中の場合は、はるかに重大な問題があることは明らかです。 PermGenのメモリの問題は、Spring、Hibernate、さらにはSun独自のJVMを含むGrailsが構築されている多くのフレームワークに起因しています。 Webコンテナー(TomcatまたはJetty)の最大ヒープサイズを調整することができます。

OracleのJRockitのように、ガベージコレクションやその他の効率性を大幅に向上させるために、JVMのさまざまな実装を試すこともできます。私は自分自身でそれを試したことはありませんが、私もGrailsの広範なプロジェクトの開発の途中にいるので、私はこれらの問題を自分で解決することができます。がんばろう!

+0

JRockitはOracle製品です http://www.oracle.com/technology/software/products/jrockit/index.html –

+0

Tomcat(6.0.18)でプロダクションモードで実行していますが、 JVMについての選択肢があります。 –

+0

Webコンテナのガベージコレクションの問題の1つは、コンテナが再起動されたときにスタックが真にリフレッシュされるということです。 (コンテナを再起動すると、単一のWebアプリケーションを再起動するだけでなく、Tomcatサービスを再起動するのと同じことになります) –

6

私は個人的にはVisualVMが好きです。間違いなくもっと強力なツールがありますが、これは使い勝手の良い使いやすさがあります。

0

アプリケーションを複数回ホットデプロイした後でこの問題が発生した場合は、this Grails bugの影響を受ける可能性があります。 Tomcat FAQには、PermGenリークの原因としていくつかの原因が考えられます。

+0

私は実際にそれが根本的な問題だと思っています(このアプリケーションはJettyでうまく動作します)。この種のデバッグを進めていきます。 –

10

あなたは

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 

を試してみましたか? (-Xmx-Xms-XX:PermSize-XX:MaxPermSize)通常の容疑者を増やすとともに

は、このアプリを展開した後かなりすぐに発生していた当社の生産のTomcat上のすべてのPermGenの問題を、解決しました。それ以降、別のOOM-Exceptionは見られませんでした。

+1

このソリューションに関するパフォーマンス関連の問題はありますか?私たちは、検索可能な、監査可能な、およびクォーツのプラグインを使用して、たくさんの再帰的な仕事をし、毎週PermGen OOMを取得しています... – hvgotcodes

関連する問題