2010-01-05 4 views
6

Tôi quan tâm đến việc có được số liệu thống kê về Ehcache mà tôi đang chạy.
Số liệu thống kê Ehcache theo khóa

Tôi muốn xem số lần truy cập/lần bỏ lỡ cho một khóa nhất định trong một khoảng thời gian. Có lẽ dưới dạng bản đồ. Ví dụ.

Đối với giờ qua (hoặc lâu dài tuy nhiên nó đã được chạy)

chính A có 30 hit và 2 bỏ lỡ
chính B đã 400 hits và 100 bỏ lỡ
chính C có 2 hit và 1 bỏ lỡ
chính D có 150 lượt truy cập và 10 bỏ lỡ

tôi đã xem xét thông qua các tài liệu (SampledCacheStatisti cs, SampledCacheStatisticsImpl, SampledCacheStatisticsWrapper, vv) và tôi đang có một thời gian khủng khiếp để tìm ra điều này.

Có ai khác có kinh nghiệm thực hiện việc này không?

Bất kỳ trợ giúp hoặc ý tưởng nào về điều này sẽ được MUCH đánh giá cao!

Trả lời

9

Các EhCache Monitor mang đến cho bạn rằng loại thông tin ... http://ehcache.org/documentation/monitor.html

truy cập theo chương trình có sẵn như sau:

CacheManager cacheManager = CacheManager.getInstance(); 
    String[] cacheNames = cacheManager.getCacheNames(); 
    for (int i = 0; i < cacheNames.length; i++) { 
     String cacheName = cacheNames[i]; 
     System.out.println(cacheName+" - "+ cacheManager.getCache(cacheName).getStatistics().toString()); 
    } 
+0

Terracotta quá xấu không cung cấp miễn phí này nữa. Bạn phải đi với sản phẩm thương mại của họ để sử dụng màn hình ehCache. Bummer –

+0

Điều này không cung cấp cho bạn số liệu thống kê cho mỗi khóa. Chỉ toàn cầu – monzonj

1

Bạn không thể theo dõi bỏ lỡ trên cơ sở mỗi-key vì số liệu thống kê được lưu trữ trên đối tượng IN cache và nếu có một miss, sẽ không có phần tử nào trong cache để theo dõi nó. Nhưng nếu bạn muốn có một hit-count cho tất cả các phím trong một bộ nhớ cache bạn cần phải làm điều gì đó như:

public Map<Object,long> getKeyHits(Ehcache cache) 
{ 
    Map<Object,long> hitMap = new HashMap<Object,long>(); 
    Map<Object,Element> allElements = cache.getAll(cache.getKeys()); 
    for (Object key : allElements.keySet()) 
    { 
    hitMap.put(key, allElements.get(key).hitCount()); 
    } 
    return hitMap; 
} 

Nếu bạn muốn xem thống kê tổng hợp trên toàn bộ một bộ nhớ cache (hoặc bạn muốn theo dõi bỏ lỡ), bạn có thể gọi getStatistics() trên bộ đệm. Xem http://ehcache.org/apidocs/net/sf/ehcache/Ehcache.html.