2017-09-01 3 views
1

私たちはJBoss 7.1.3.Final、Java 7、およびHibernate 5.1.5.Finalを使用しています。私は24時間キャッシュ内に滞在するアイテムをご希望のHibernateキャッシュ内のアイテムを少なくとも24時間保管するにはどうすればいいですか?

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> 

    <!-- This is a default configuration for 256Mb of cached data using the JVM's heap, but it must be adjusted 
     according to specific requirement and heap sizes --> 
    <defaultCache maxElementsInMemory="750000" 
     eternal="false" 
     timeToIdleSeconds="86400" 
     timeToLiveSeconds="86400" 
     overflowToDisk="false" 
     memoryStoreEvictionPolicy="LRU"> 
    </defaultCache> 
    <cache name="main" maxElementsInMemory="750000" /> 

    <cacheManagerPeerProviderFactory 
     class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
     properties="peerDiscovery=automatic, multicastGroupAddress=240.0.0.1, 
     multicastGroupPort=4446, timeToLive=32"/> 

    <cacheManagerPeerListenerFactory 
     class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
     properties="hostName=localhost, port=40001, 
     socketTimeoutMillis=2000"/>  
</ehcache> 

...私たちは、これらのメモリ設定

JAVA_OPTS="-Xms256m -Xmx25600m -XX:-UseGCOverheadLimit -XX:MaxPermSize=512m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" 

でJBossを起動し、これが私たちのehcache.xmlの設定です。しかし、私が気づいたことは、私が使用している場合、「トップ」JBossは私がしかし

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
    8429 jboss  20 0 30.8g 2.1g 28m S 113.6 7.3 156:32.74 java 

のようなものを参照してください使用しているどのくらいのメモリ検討するということである、「RES」数は "上がって、日中にドリフトします交通量が多いときは10g、その後交通量が少ないときは夕方に下がります。アイテムが少なくとも24時間キャッシュに入っていて、JBossを再起動していない場合は、「RES」番号は高く保たれてはいけませんか?私の理解によれば、この数値は、Hibernateキャッシュを含むヒープのサイズと相関しています。

答えて

0

の列には、という物理的なメモリの量だけが表示され、Javaプロセス全体が現在使用されています。これは、ハイバネートキャッシュが使用しているメモリの量とは関係ありません。

Javaヒープ統計にはjstatを使用してください。キャッシュの正確な統計情報を得るには、ehcache独自のAPIを使用します。

+0

私たちは本番マシンにjstatをインストールしていません(それを行うオプションではありません)。そして、 "Javaプロセス全体"にはキャッシュが含まれていますか?その数値は完全には正確ではないかもしれませんが、サイズが増減するにつれてキャッシュの影響を受けます。 – Dave

+0

いいえ、RES番号は物理メモリの量、つまりOSによってスワップアウトされていないメモリの量を示します。たとえば、キャッシュには4G分のオブジェクトが格納されている可能性がありますが、その部分は物理メモリまたはディスクのいずれかに存在する可能性があります。 jstatを実行できない場合は、JVMやehcache APIを呼び出して、ヒープ/キャッシュの統計収集コードをアプリケーションに組み込む必要があります。 – jingx

+0

スワップアウトされていないので、キャッシュを使用するためのメモリが必要な場合は、キャッシュに書き込まれませんか?私は "free -m"を使ってスワップされるものがないことを検証できませんでしたか? – Dave

0

Ehcache 2では、使用方法がわかりません。しかし、Ehcache 3はティア統計を見ることでそれを与えることができます。

あなたの場合、sizeofを見てください。物の大きさを知ることができるライブラリです。

+0

それは私が求めていることではありません。私はキャッシュ内のアイテムの数については求めていません、私はそのメモリの使用量について質問しています。私の質問に曖昧なことがあれば、私に知らせてください。 – Dave

+0

私の答えを更新させてください – Henri

関連する問題