java - 如何使用 JProfiler 自定义探针遥测监控 Guava 缓存统计信息

标签 java guava jprofiler qvt telemetry

在 JPL,我们在系统工程工作中使用模型转换技术。 我们使用 OMG 的 QVT 规范的 Eclipse QVTO 实现。

http://www.eclipse.org/modeling/m2m/downloads/index.php?project=qvtoml

但是,Eclipse QVTO 编译器慢得令人沮丧。 通过明智地应用 Guava 的缓存,我已经取得了显着的成果 Eclispe QVTO 编译器的性能改进。可以做更多 但根据我所拥有的,我想了解一下有效性 通过在运行时监视缓存统计信息来进行缓存优化; 即 com.google.common.cache.CacheStats

有没有人建议w.r.t.如何定义 JProfiler 自定义遥测探针 做这个?

http://resources.ej-technologies.com/jprofiler/help/doc/indexRedirect.html?http&&&resources.ej-technologies.com/jprofiler/help/doc/helptopics/probes/custom.html

  • 尼古拉斯。

最佳答案

对于可以使用静态方法访问的单个缓存,这相当容易。在自定义探针向导中,将元数据脚本设置为

metaData.recordOnStartup(true);

metaData.telemetry(true);
metaData.addCustomTelemetry("Request count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Hit rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Miss count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Miss rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Load success count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Load exception rate", Unit.PERCENT, 1f);
metaData.addCustomTelemetry("Eviction count", Unit.PLAIN, 1f);
metaData.addCustomTelemetry("Total load time", Unit.MICROSECONDS, 1f);
metaData.addCustomTelemetry("Average load penalty", Unit.MICROSECONDS, 1f);

和遥测脚本

import test.CacheTest;
import com.google.common.cache.*;

Cache cache = CacheTest.getSingleCache();
if (cache == null) {
    return;
}
CacheStats stats = cache.stats();
data[0] = (int)stats.requestCount();
data[1] = (int)stats.hitCount();
data[2] = (int)(stats.hitRate() * 100);
data[3] = (int)stats.missCount();
data[4] = (int)(stats.missRate() * 100);
data[5] = (int)stats.loadSuccessCount();
data[6] = (int)stats.loadExceptionCount();
data[7] = (int)(stats.loadExceptionRate() * 100);
data[8] = (int)stats.evictionCount();
data[9] = (int)stats.totalLoadTime() / 1000;
data[10] = (int)stats.averageLoadPenalty() / 1000;

其中 CacheTest.getSingleCache() 是获取缓存的 Hook 。

这将为您提供所有缓存统计测量的遥测,如下面的屏幕截图所示:

enter image description here

关于java - 如何使用 JProfiler 自定义探针遥测监控 Guava 缓存统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867611/

相关文章:

java - 如何在预定时间使 Guava 缓存失效?

jprofiler - 无法从 JProfiler 创建 JMX 连接

java - 为什么要使用简单最近最少使用缓存机制?

java - 在 Java 8 中收集流的元素并将其中一些元素减少为结果集合中的单个元素

java - guava的ImmutableList并不是真的不可变

java - 使用重入锁的生产者消费者不起作用

serialization - GWT-RPC 序列化的 ImmutableCollection 声明

tomcat - 在 jProfiler 中获取没有 catalina 资源的 webapp 的内存使用情况

java - Hibernate:将字符串反序列化为值

java - 将字符串哈希为固定位哈希值