2011-01-12 16 views
2

EDIT - JVisualVMのキャッシュ#15とメモリストア#9を見ました。クエリキャッシュであることが分かります。うまくいけば、我々は、Tomcatの6倍に配備のGrailsアプリケーション(V1.2.0)を持っているメモリ問題の分析


...未満10K項目(デフォルト)にクエリキャッシュを制限confの中にキャッシュ構成は、この問題を解決しますドロップします。 OOMクラッシュを経験しました。ヒープダンプを取得し、JVisualVMで解析を開始しました。これは私が alt text

この alt text

にehcacheのもののように多く、バイトと文字配列の間違いをたくさん見ていものです。私は 'grails memory leak ehcache'の周りをグーグルで試してみましたが、決定的なものは何も出てこません。誰かがこのような問題を見たか、これを引き起こしている可能性について何か洞察を持っていますか?これは誤った設定のehcacheですか?

私たちは様々なプラグイン(acegi、quartz、mail、background-thread)を使用しています。すべての最新バージョンはgrailsバージョン1.2.0です。

EDIT - いくつかの詳細情報

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -d64 -server -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC 

でTomcatを起動し、エラーが

java.lang.OutOfMemoryError: Java heap space 

興味深いことに、我々はパーマ世代スペース関連のエラーを取得するために使用されるが、上に示したJavaの設定に更新したところ、permgenのスペースエラーはなくなりました。

+0

ヒープとPermGenにどれだけのメモリを与えていますか? – Davidann

+0

EHCacheモニタを接続しましたか?その多くのメモリはEHCacheの設定ミスに関係していると考えられます。あまりにも多くを格納する可能性がある特定のキャッシュがあるかどうかを見てください。おそらく、要素の最大数を設定し、キャッシュの要素に対してTTLを設定します。 – Sean

+0

@sean GORMマッピングではキャッシュを使用しますが、集中型ehcache設定はありません。多分それはそれです。デフォルトのTTLは永遠でしょうか?オブジェクトを何度もキャッシュしておくだけですか? – hvgotcodes

答えて

2

多くの文字列とchar []があるのは正常です。私はehcacheの設定を修正しようとしています...明らかにあなたは多くをキャッシュします。キャッシュをディスクにダンプするオプションがありますが、これはあなたのための解決策です。

EDIT:PermGenは、-XX:MaxPermSize=256mのため退院します。これはかなりです。

+0

は、ehcacheを設定してインスタンスを再キャッシュするか、またはキャッシュが無期限に拡大することを許可しませんか? – hvgotcodes

+0

設定方法によって異なります。そして、構成後にサーバーを再起動すると仮定しました。 – Daniel

1

ヒープではなく、パーマネントスペースが不足している可能性があります。

GCをファイルとリンクに記録し、JVM引数をポストバックします。

0

Grails 1.2.0または1.2.5(最新1.2.x)を使用していますか?最新の安定版は1.3.6です。問題はehcacheの設定が間違っていると思います。

+0

1.2.0。私はconfにehcache.xmlを追加しようとしています。私はそのファイルがないと、どのような動作がデフォルトであるのか不思議です。 – hvgotcodes