首页 > 解决方案 > 动态切换 Caffeine Cache 上的记录统计信息

问题描述

我希望能够通过 REST 端点或 JMX 方法按需动态切换咖啡因缓存统计信息的记录

我们有一个大型应用程序,我们在其中使用多个咖啡因缓存实例。我们可以使用所有可能的性能升级,因此持续录制似乎是多余的。特别是如果 JavaDoc 说记录有性能成本。经过我的分析,我认为它没有直接支持。或者是吗?

我有 2 个统计目标,第一个是能够调整我们的缓存策略。确定我们的命中率糟糕的地方,或者我们实际上不需要缓存的地方。为了适应这种情况,我们可能会在打开录制的情况下进行临时发布,然后再进行最终发布。这意味着这个解决方案根本不是动态的。

第二个目标是使用它来确定系统故障的原因。在实时生产环境中诊断错误状态。为了保持我所有的理想要求,这必须是动态的。如果我不能更改缓存实例,我想我可以替换该实例。这会给系统带来巨大的时间负载,因为它基本上会清除所有缓存。

为了避免清除,我们可能会以某种方式将值廉价地传递给新实例,并切换统计记录。我还不知道如何,甚至可能。

所以我的问题是实现我的目标的最佳方式是什么?

标签: javacaffeinecaffeine-cache

解决方案


您是对的,不支持动态配置统计信息。但是,您可以自己StatsCounter提供可以提供这种支持的服务。

StatsCounter由于存储在LongAdder柜台中,使用内置的成本应该很便宜。在不干净的环境中,我观察到读取吞吐量下降了 20%,但仍然超过 100M ops/s。在那个吞吐量下,缓存不应该成为实际应用程序逻辑的瓶颈。

您很可能可以毫无顾虑地打开统计信息。如果您担心,请先尝试进行基准测试,看看额外的解决方法是否值得付出努力。如果是这样,StatsCounter则可能可以接受自定义(但同样是基准)。


推荐阅读