1

ある種の検索エンジンとそれに付属するデフォルトのキャッシュに Play Framework 2 を使用しています。各クエリの結果をキャッシュします。驚いたことに、メモリ不足エラーが発生しています。エビクトの回数は指定していませんが、EhCache はデフォルトのポリシー ( Play 2.0 ehcache.xml ) を使用してエントリをエビクトするという印象を受けました。そうではありませんか?ehcache.xml自分の を指定して Play をオーバーライドできますconf/ehcache.xmlか? 別の設定を行うには何が必要ですか?

更新: OOM エラーは、さらに掘り下げた後、別のコンポーネントによって引き起こされた可能性があります。しかし、問題はまだ残っています: メモリが不足している場合、Play の EHCache は追い出されますか? キャッシュを有効にすると、OOM エラーがすぐに発生します。

4

1 に答える 1

2

リンク先の ehcache.xml に基づいて、エントリ数がヒープ内の 10k エントリに達すると、ehcache は削除されます。今度は、1,000 万エントリに制限された diskStore も使用します。しかし、ディスク ストアでは、すべてのキーをメモリに収める必要があります。これが、直面している問題である可能性があります。

また、TTI/TTL はインラインで受け入れられることに注意してください。つまり、アクセス時にデータの鮮度がチェックされます。Ehcache は、積極的にキャッシュから要素を削除して期限切れにするスレッドを生成しません。

お役に立てれば...

于 2012-11-22T18:01:36.470 に答える