我希望能够通过REST端点或JMX方法按需动态切换咖啡因缓存的状态记录
我们有一个大型应用程序,其中使用了多个Caffeine Cache实例。我们可以使用所有可能的性能升级,因此将其不断记录似乎是多余的。特别是如果JavaDoc说录制会降低性能。经过分析,我认为不直接支持它。 是吗?
我有2个统计目标,第一个目标是能够调整我们的缓存策略。找出我们的可怕命中率,或实际上不需要缓存的位置。为了适应这一点,我们可能会在录音打开的情况下进行临时发行,然后进行最终发行。这意味着该解决方案根本不是动态的。
第二个目标是使用它来识别系统故障的原因。诊断实时生产环境中的错误状态。为了满足我所有的理想要求,这必须是动态的。如果我不能更改缓存实例,我以为可以替换该实例。因为这将清除所有缓存,所以这将给系统带来巨大的时间负载。
为避免清除,我们可能会以某种方式将统计记录切换为低价地将值传递给新实例。我还不知道怎么做,甚至可能。
所以我的问题是实现目标的最佳方法是什么?
答案 0 :(得分:1)
您是正确的,不支持动态配置统计信息。但是,您可以提供自己的StatsCounter
来提供此支持。
由于内置到StatsCounter
计数器中,因此使用内置LongAdder
的成本应该便宜。在不干净的环境中,我观察到读取吞吐量下降了20%,但仍超过了100M ops / s。在这样的吞吐量下,高速缓存不应成为实际应用程序逻辑的瓶颈。
您很有可能无需担心就可以打开统计信息。如果您有问题,请先尝试进行基准测试,看看是否值得进行其他解决方法。如果是这样,则可以接受自定义StatsCounter
(但同样是基准)。