You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Caffeine缓存仅上报size指标,无Micrometer命中/未命中等指标

问题原因及排查方向

以下是几个可能导致你无法看到cache.gets、cache.puts等Micrometer指标的原因:

  • Spring Boot版本与Caffeine 3.x的适配问题
    Caffeine 3.x重构了统计模块的API,而Spring Boot在2.6版本之后才正式适配这套新API。如果你的Spring Boot版本低于2.6,默认的自动配置无法正确采集Caffeine 3.x的get/put等操作统计,只会暴露缓存size这类基础指标。建议升级到Spring Boot 2.6及以上版本。

  • 未将Caffeine统计绑定到Micrometer
    只调用recordStats()开启Caffeine本地统计是不够的,需要显式将统计数据绑定到Micrometer的MeterRegistry。你的CacheConfig配置中可能缺少这一步:

    @Bean
    public CacheManager cacheManager(MeterRegistry meterRegistry) {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager("your-target-cache");
        cacheManager.setCaffeine(Caffeine.newBuilder()
                .recordStats(() -> MicrometerStatsCounter.forRegistry(meterRegistry))); // 关键:用Micrometer实现统计
        return cacheManager;
    }
    

    不指定Micrometer统计实现的话,Caffeine只会用默认的统计器记录数据,不会同步到Actuator的指标体系中。

  • Actuator指标暴露配置缺失
    检查你的配置文件,确保缓存指标被允许暴露:

    # 暴露metrics端点
    management.endpoints.web.exposure.include=metrics
    # 开启缓存指标采集
    management.metrics.enable.cache=true
    

    如果management.metrics.enable.cache设为false,即使采集到了缓存操作统计,也不会在Actuator中展示。

  • 缓存操作未实际触发
    确认你的测试逻辑真的触发了对应的缓存操作:比如第一次调用@Cacheable方法会触发put,第二次及之后调用才会触发get。如果测试只执行了缓存填充(put),自然看不到cache.gets指标;如果只执行了命中查询,也看不到cache.puts。可以补充测试用例,覆盖不同的缓存操作场景。

  • 指标名称或缓存名称匹配错误
    Micrometer的缓存指标格式是cache.gets{cache_name="你的缓存名",result="hit/miss"},cache.puts同理。检查你在Actuator中查询的指标是否对应正确的缓存名称,避免因为名称不匹配误以为指标不存在。


内容的提问来源于stack exchange,提问作者hitchhiker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:35:28