天天看點

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

一、使用狀态:

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
  1. Name: 緩存名

  2. Status: 狀态 
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  3. TerracottaClustered: 是否是bigmemory叢集模式(bigmemory max)

二、配置資訊:

(對應到ehcache.xml中的自定義配置和預設配置)

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
  1. DiskExpiryThreadIntervalSeconds: 每xx秒檢查硬碟的資料是否有過期的

  2. DiskPersistent: 是否做硬碟持久化

  3. DiskSpoolBufferSizedMB: 硬碟緩存區尺寸(機關:MB)

  4. Eternal: 對象是否永久,如果是true的話,TimeToIdleSeconds和TimeToLiveSeconds的配置都會無效。
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  5. LoggingEnabled: 是否啟動日志

  6. MaxBytesLocalDisk: 硬碟最大存儲量(機關是位元組)

  7. MaxBytesLocalHeap: 堆内最大存儲量(機關是位元組)
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  8. MaxMemoryOffHeapInBytes: 設定對外記憶體的最大尺寸(機關是位元組)
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  9. MaxBytesLocalOffHeap: 堆外最大存儲量(機關是位元組)(8和9貌似是一樣的)
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  10. MaxElementsInMemory:   記憶體最大Elements個數

  11. MaxElementsOnDisk: 硬碟最大Elements個數

  12. MaxEntriesLocalDisk: 硬碟最大Entries個數 
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  13. MaxEntriesLocalHeap: 堆内最大Entries個數 
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  14. TimeToIdleSeconds: 對象最大空閑時間(超過空閑時間且超過設定的Max,可能參與到對象的删除政策中)
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  15. TimeToLiveSeconds: 對象的最大存活時間,也就是對象的過期時間。
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

  16. OverflowToDisk: OffHeap如果滿了,是否flow到硬碟。(預設是false, 如果為false,所有和硬碟相關的配置都不生效)

  17. OverflowToOffHeap: Heap如果滿了,是否flow到OffHeap。

  18. Name: 緩存名

  19. MemoryStoreEvictionPolicy: 堆内Eviction政策(預設是LRU) 
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
    BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

MaxEntries和MaxBytes,一般來說是不共用的。

如果能預估對象個數,但是容量不确定,可以用MaxEntries

如果能預估容量,但是對象個數不确定,可以用MaxBytes

三、統計資訊:

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

1. AssociatedCachedName: cache的名稱,對應ehcache.xml中的<cache name="mobilServiceOffHeap".../>

2. CacheHitPercentage: 總緩存命中率 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

3. CacheHits: 總緩存命中數 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

4. CacheMissPercentage: 總緩存丢失率 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

5. CacheMisses: 總緩存丢失數 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

6. DiskStoreObjectCount: 硬碟中存儲的對象個數 (配置中DiskPersistent必須為true)

7. InMemoryHitPercentage: 堆内命中率 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

8. InMemoryHits: 堆内命中數 

9. InMemoryMisses: 堆内丢失數

11. MemoryStoreObjectCount: 堆記憶體儲對象個數

11. OffHeapStoreObjectCount: 堆外存儲對象個數

12. OffHeapHitPercentage: 堆外命中率 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

13. OffHeapHits: 堆外命中數

14. OffHeapMisses: 堆外丢失數 

15. OnDiskHitPercentage: 堆外命中率

16. OnDiskHits: 堆外命中數

17. OnDiskMisses: 堆外丢失數

18. ObjectCount: 總對象個數 
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

如果目前cache是offheapCache,那麼總對象數 = OffHeapStoreObjectCount + DiskStoreObjectCount (可能InMemory是Offheap的熱點資料,認為是一個對象)

如果目前cache是heapCache,那麼總對象數 = InMemoryStoreObjectCount + DiskStoreObjectCount

19. WriterMaxQueueSize: the maximum size of the write-behind queue (應該是寫硬碟的線程,用到的隊列)

20. WriteQueueLength:  the size of the write-behind queue(應該是寫硬碟的線程,用到的隊列)

四、自定義統計資訊

1. 除了預設的統計資訊,可以調用ehcache api擷取更加全面的統計資訊,實作自己來定制統計。

package com.sohu.tv.mobil.common.jmx;
import java.util.List;

public interface EhcacheExtendWatcherMBean {
    /**
     * 擷取延遲結果
     * 
     * @return
     */
    List<String> getGlobalResult();
    /**
     * 擷取剔除數量
     * 
     * @return
     */
    long getEvictedCount();
    /**
     * 擷取逾時數量
     * 
     * @return
     */
    long getExpiredCount();
    /**
     * 擷取未命中統計
     * 
     * @return
     */
    List<String> getMissStatisticsMap();
}      
package com.sohu.tv.mobil.common.jmx.impl;
import com.sohu.tv.mobil.common.jmx.EhcacheExtendWatcherMBean;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.statistics.StatisticsGateway;
import net.sf.ehcache.statistics.extended.ExtendedStatistics;
import java.util.ArrayList;
import java.util.List;

public class EhcacheExtendWatcher implements EhcacheExtendWatcherMBean {
    private Ehcache ehcache;
    @Override
    public List<String> getGlobalResult() {
        ExtendedStatistics extendedStatistics = ehcache.getStatistics().getExtended();
        ExtendedStatistics.Result getResult = extendedStatistics.allGet();
        ExtendedStatistics.Result putResult = extendedStatistics.allPut();
        ExtendedStatistics.Result missResult = extendedStatistics.allMiss();
        List<String> resultList = new ArrayList<String>();
        String getStr =
                "allGet:count=" + getResult.count().value() + ";rate=" + getResult.rate().value()
                        + ";latency:average=" + getResult.latency().average().value() + ";minimum="
                        + getResult.latency().minimum().value() + ";maximum=" + getResult.latency()
                                .maximum().value();
        String putStr =
                "allPut:count=" + putResult.count().value() + ";rate=" + putResult.rate().value()
                        + ";latency:average=" + putResult.latency().average().value() + ";minimum="
                        + putResult.latency().minimum().value() + ";maximum=" + putResult.latency()
                                .maximum().value();
        String missStr =
                "allMiss:count=" + missResult.count().value() + ";rate=" + missResult.rate().value()
                        + ";latency:average=" + missResult.latency().average().value() + ";minimum="
                        + missResult.latency().minimum().value() + ";maximum=" + missResult.latency()
                                .maximum().value();
        resultList.add(getStr);
        resultList.add(putStr);
        resultList.add(missStr);
        return resultList;
    }
    @Override
    public long getEvictedCount() {
        StatisticsGateway statisticsGateway = ehcache.getStatistics();
        return statisticsGateway.cacheEvictedCount();
    }
    @Override
    public long getExpiredCount() {
        StatisticsGateway statisticsGateway = ehcache.getStatistics();
        return statisticsGateway.cacheExpiredCount();
    }
    @Override
    public List<String> getMissStatisticsMap() {
        StatisticsGateway statisticsGateway = ehcache.getStatistics();
        ExtendedStatistics.Result missResult = statisticsGateway.cacheMissOperation();
        ExtendedStatistics.Result missExpiredResult = statisticsGateway.cacheMissExpiredOperation();
        ExtendedStatistics.Result missMissNotFoundResult =
                statisticsGateway.cacheMissNotFoundOperation();
        String missResultStr =
                "missResult:count=" + missResult.count().value() + ";rate=" + missResult.rate().value()
                        + ";latency:average=" + missResult.latency().average().value() + ";minimum="
                        + missResult.latency().minimum().value() + ";maximum=" + missResult.latency()
                                .maximum().value();
        String missExpiredResultStr =
                "missExpiredResult:count=" + missExpiredResult.count().value() + ";rate="
                        + missExpiredResult.rate().value() + ";latency:average=" + missExpiredResult
                                .latency().average().value() + ";minimum=" + missExpiredResult.latency().minimum()
                                .value() + ";maximum=" + missExpiredResult.latency().maximum().value();
        String missMissNotFoundResultStr =
                "missMissNotFoundResult:count=" + missMissNotFoundResult.count().value() + ";rate="
                        + missMissNotFoundResult.rate().value() + ";latency:average="
                        + missMissNotFoundResult.latency().average().value() + ";minimum="
                        + missMissNotFoundResult.latency().minimum().value() + ";maximum="
                        + missMissNotFoundResult.latency().maximum().value();
        List<String> resultList = new ArrayList<String>();
        resultList.add(missResultStr);
        resultList.add(missExpiredResultStr);
        resultList.add(missMissNotFoundResultStr);
        return resultList;
    }
    public void setEhcache(Ehcache ehcache) {
        this.ehcache = ehcache;
    }
}      

2. 實作效果:

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

3. 重要統計說明:

EvictedCount: 剔除個數(記憶體滿之後) 

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

ExpiredCount: 過期個數 (如果設定了單個KEY的過期時間或者全局的TimeToLive就會出現) 

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  

GlobalResult: 包含各個指令的調用次數,各種響應時間,QPS(rate) 

BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511  
BigMemory系列文章--5. Ehcache配置和統計資料  轉載請注明出處哈:http://carlosfu.iteye.com/blog/2237511