2010-01-05 9 views
6

Estoy interesado en obtener estadísticas sobre el Ehcache que tengo en ejecución.
Ehcache Estadísticas por clave

Me gustaría ver la cantidad de visitas/fallas para una clave determinada durante un período de tiempo. Tal vez en la forma de un mapa. Por ejemplo.

Para la hora pasado (o el tiempo que ha estado funcionando)

Key A tenía 30 hits y 2 pierde
Key B había 400 hits y 100 pierde
Key C tenía 2 accesos 1 y pierde
tecla D tenía 150 hits y 10 pierde

he mirado a través de la documentación (SampledCacheStatisti cs, SampledCacheStatisticsImpl, SampledCacheStatisticsWrapper, etc.) y me está costando trabajo descifrar esto.

¿Alguien más ha tenido experiencia implementando esto?

¡Cualquier ayuda o idea sobre esto sería MUCHO apreciada!

Respuesta

9

El EhCache Monitor le da ese tipo de información ... http://ehcache.org/documentation/monitor.html

Acceso mediante programación está disponible como sigue:

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

Lástima que Terracotta ya no proporciona esto gratis. Debe ir con su producto comercial para usar el monitor ehCache. Bummer –

+0

Esto no te da las estadísticas por clave. Solo global – monzonj

1

No se puede realizar un seguimiento de fallos en una base por-clave, porque las estadísticas son almacenado en el objeto EN LA memoria caché y si hubo una falla, no habría ningún elemento en la memoria caché para rastrearlo. Pero si quieres un hit-recuento de todas las claves en una memoria caché que había necesidad de hacer algo como:

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; 
} 

Si prefiere ver las estadísticas agregadas sobre toda una caché (o si desea realizar un seguimiento de fallos), puede llamar a getStatistics() en la memoria caché. Ver http://ehcache.org/apidocs/net/sf/ehcache/Ehcache.html.