2017-10-13 2 views
0

最近、本番サーバのehcache jmxインターフェイスを開き、連続モニタを開始しました。ehcache 2.8.5は最大でも1百万エントリを保持しています

監視すると、小さなオブジェクトのキャッシュの容量は100万回という上限があります。

これは、天井量を持つモニターグラフです。グラフのy軸はキャッシュ内のObjectCountで、ehcache jmxインターフェイスを経由します。

graph ehcache object count

当社のキャッシュ設定は、このようなものです:

<cache name="prodStockApiEhCache" maxBytesLocalHeap="200M" overflowToDisk="false" eternal="false" timeToIdleSeconds="240" timeToLiveSeconds="360" memoryStoreEvictionPolicy="LRU" /> 

はCacheManagerのレベルでは、指定された設定はありません。

当社のキャッシュされたクラスは以下のようである:

public class ProductStock { 

    private long productId; 

    private int productCount; 

    private int pickingCount; 

    private int lackType; 

    private int areaSale; 

    //getter and setter.... 
} 

我々はそれがGoogleのはsizeof-agent.jarを使用し、ehcacheをのオブジェクトサイズ推定方法をreseached。

sizeof-agent.jarでテストします。クラスのインスタンスヒープサイズは約40バイトです。私たちが100万人を倍増させると、それは40Mに等しくなり、私たちが設定した200Mよりはるかに少ないです。

また、私たちはehcache(2.8.5)のソースを参照し、100万の制限を見つけませんでした。また、eclipseデバッグ・モデルでehcachemanagerインスタンスの構成を調べましたが、maxEntriesOnHeapは0であり、制限はありません。

これは有線ですが、私たちが見逃した情報はありますか?監視グラフの含意権ですか?

答えて

0

私が知っている1 000 000エントリの制限はありません。 ehcache.xmlを完全に提供できますか?

あなたはJMXの統計を見ましたか?退去はありますか?

+0

ありがとうHenri。小さなテストプロジェクトで他の "maxBytesLocalHeap"値をテストします。結果は次のようになります。maxBytesLocalHeap = 100Mの場合、729,000個のオブジェクトをキャッシュできます。 maxBytesLocalHeap = 200Mの場合、139万個のオブジェクトをキャッシュできます。 maxBytesLocalHeap = 300Mの場合、145万のオブジェクトをキャッシュできます。このテストは、別の方法で100万エントリの制限がないことを証明します。 Ehcacheは、キャッシュされたオブジェクトのローカルヒープバイトだけでなく、他のオブジェクトが含まれている必要があるかもしれません。 – eric

関連する問題