2. 缓存命中率核心指标

缓存命中率是衡量 Envoy 灾备缓存系统效率最直接的量化指标。它反映了请求在缓存层被直接满足的比例,直接关联到后端回源压力、响应延迟和整体系统稳定性。本节从定义、计算、影响因子和行业基准四个维度展开,为后续巡检和优化建立统一的度量标尺。

2.1 缓存命中率定义与计算方式

缓存命中率(Cache Hit Ratio, CHR)是指在特定时间窗口内,Envoy 直接从缓存中成功响应请求的次数占总请求次数的百分比。与之对应的是缓存未命中率(Cache Miss Ratio, CMR),两者之和为 100%。

指标 定义 计算公式
缓存命中率 (CHR) 缓存直接响应的请求占比 CHR = (Cache Hits / Total Requests) × 100%
缓存未命中率 (CMR) 需要回源或重新计算的请求占比 CMR = (Cache Misses / Total Requests) × 100%
字节命中率 (BHR) 从缓存中直接提供的字节数占比 BHR = (Cache Bytes / Total Response Bytes) × 100%
巡检要点:在 Envoy 的统计输出中,cluster.{name}.upstream_rq_completed 代表总请求数,cluster.{name}.upstream_rq_200 等状态码计数需结合缓存层(如 Redis、Memcached)的 get_hits 和 get_misses 指标联合计算。建议同时监控请求命中率和字节命中率,因为小对象高命中率可能掩盖大对象频繁未命中的问题。

2.2 影响缓存命中率的核心因子

Envoy 灾备场景下,缓存命中率并非孤立指标,它受以下五个关键因子共同作用:

  1. 缓存容量与淘汰策略:容量不足导致频繁驱逐(Eviction),LRU/LFU/TTL 策略的选择直接影响热数据留存率。
  2. 请求分布与热点倾斜度:遵循 Zipf 分布的请求天然具有高命中率潜力;均匀分布或长尾请求会显著拉低命中率。
  3. 缓存键设计:键粒度过细(如包含时间戳、用户 ID)会导致缓存碎片化,几乎无法命中;键粒度过粗则可能引发缓存雪崩。
  4. 数据有效期(TTL):TTL 过短导致缓存频繁过期重建;TTL 过长则数据新鲜度下降,灾备场景下可能返回过期数据。
  5. 灾备切换行为:主集群故障触发灾备切换时,缓存预热未完成、路由规则变更、连接池重建等都会造成瞬时命中率暴跌。
Envoy 特有因子:Envoy 的 route_config 动态更新、hedge(对冲请求)和 retry(重试)策略会放大后端请求计数,导致统计层面的命中率失真。巡检时需区分“Envoy 视角的请求数”与“缓存层视角的请求数”。
缓存命中率影响因子关系图 缓存命中率 (CHR) 容量与淘汰策略 请求分布与热点 缓存键设计粒度 数据有效期 (TTL) 灾备切换行为 五个因子共同作用,单一因子优化无法保证整体命中率提升

2.3 行业基准值与分级标准

缓存命中率没有的“满分”值,不同业务场景的合理区间差异显著。以下基准值基于大规模生产环境(CDN、API 网关、微服务缓存)的统计归纳,适用于 Envoy 灾备场景的参考对标:

业务场景 优秀区间 良好区间 需关注区间 危险区间
静态资源(图片/JS/CSS) ≥ 95% 90% – 94% 80% – 89% < 80%
API 响应缓存(读密集) ≥ 85% 75% – 84% 60% – 74% < 60%
数据库查询结果缓存 ≥ 90% 80% – 89% 65% – 79% < 65%
灾备切换后预热期 ≥ 70%(30分钟内) 50% – 69% 30% – 49% < 30%
会话/状态缓存 ≥ 99% 95% – 98% 85% – 94% < 85%
灾备场景特别警示:灾备切换后的“预热期”命中率基准与稳态不同。切换后 5 分钟内命中率可能低于 20%,这是正常现象。但如果 30 分钟后仍低于 50%,说明缓存预热机制或容量规划存在严重缺陷,需要立即介入。

2.4 命中率与系统健康的关联模型

缓存命中率不是孤立数字,它与后端负载、响应延迟、错误率之间存在明确的量化关联。理解这些关联,才能在巡检中快速定位根因:

  • 命中率下降 10% → 后端 QPS 上升 30%~50%(取决于缓存 miss 是否触发重试/对冲)
  • 命中率低于 60% → P99 延迟可能翻倍(回源路径增加网络往返和计算开销)
  • 命中率剧烈波动(±20% 以上)→ 通常伴随缓存雪崩或热点失效
  • 字节命中率远低于请求命中率 → 大对象缓存策略需要优化
命中率与系统健康关联模型 缓存命中率变化 后端 QPS 上升 30~50% P99 延迟翻倍 错误率 & 超时增加 命中率每下降 10%,系统资源消耗呈非线性增长 巡检时应将命中率与延迟、错误率联合监控,而非孤立看单一指标

2.5 命中率巡检的黄金指标组合

在实际 Envoy 灾备巡检中,建议同时采集以下五个指标形成“命中率健康面板”:

指标名称 Envoy/缓存层来源 巡检阈值 异常行为
请求命中率 envoy_cluster_upstream_rq_* + 缓存 get_hits ≥ 80%(稳态) 持续低于 60% 或单次跌幅 > 15%
字节命中率 缓存层 bytes_served / bytes_requested ≥ 75% 与请求命中率偏差 > 20%
驱逐率 缓存层 evicted_keys / 秒 < 1% 总键数/小时 驱逐率突增 > 5 倍基线
过期率 缓存层 expired_keys / 秒 < 2% 总键数/小时 过期率突增 > 3 倍基线
回源延迟比 envoy_cluster_upstream_rq_time / 缓存命中延迟 回源延迟 ≤ 3× 缓存命中延迟 回源延迟 > 5× 缓存命中延迟
巡检自动化建议:将上述五个指标封装为 Prometheus 告警规则,设置多级阈值(Warning / Critical)。在灾备切换场景下,自动将 Warning 阈值放宽 50%(例如命中率从 80% 降至 60% 才告警),避免切换期间产生大量误报。