2. 缓存命中率核心指标
缓存命中率是衡量 Nexus Repository 代理缓存效率最直接的量化指标。理解其定义、区分不同维度的命中率、并掌握在 Nexus UI 中的查看方法,是调优工作的第一步。
2.1 缓存命中率(Hit Ratio)定义
缓存命中率指用户或构建工具从代理仓库请求制品时,该制品在本地缓存中已存在(即“命中”),无需回源到远程仓库下载的比例。其基本计算公式为:
缓存命中率 = (缓存命中次数 / 总请求次数) × 100%
命中率越高,说明代理缓存越有效,网络延迟和远程仓库负载越低,构建速度越快。
调优目标参考:对于稳定的生产环境,代理缓存命中率通常应维持在 85% - 95% 以上。低于 70% 时,需要检查缓存策略、TTL 设置或请求模式。
2.2 字节命中率 vs 请求命中率
Nexus 在统计命中率时,存在两个核心维度:请求命中率(Request Hit Ratio) 和 字节命中率(Byte Hit Ratio)。两者反映不同的缓存效率侧面,不能混用。
| 指标 | 定义 | 计算公式 | 关注点 | 典型场景 |
|---|---|---|---|---|
| 请求命中率 | 按 HTTP 请求次数统计的命中比例 | 命中请求数 / 总请求数 × 100% | 请求频率、小文件缓存效果 | 大量小体积 POM、metadata 文件 |
| 字节命中率 | 按传输字节数统计的命中比例 | 命中字节数 / 总请求字节数 × 100% | 带宽节省、大文件缓存效果 | 大型 JAR、WAR、Docker 镜像层 |
关键区别:请求命中率高但字节命中率低,说明缓存了大量小文件,但大文件频繁回源;反之,字节命中率高但请求命中率低,说明大文件缓存效果好,但大量小文件未命中。调优时需要同时关注两个指标,不能只看单一维度。
2.3 通过 Nexus UI 查看命中率
Nexus Repository Manager 3 提供了内置的监控页面,可以直观查看代理仓库的缓存命中率。操作路径如下:
- 登录 Nexus 管理后台,进入 Administration → System → Monitoring → Performance。
- 在 Repository Performance 区域,选择需要查看的代理仓库(如
maven-central-proxy)。 - 页面会展示该仓库的 Request Hit Ratio 和 Byte Hit Ratio 实时数据及历史趋势图。
注意:Nexus 默认只保留最近 7 天的性能数据。如果需要长期趋势分析,建议配置外部监控系统(如 Prometheus + Grafana)或定期导出指标。
以下示意图展示了 Nexus UI 中命中率查看页面的核心布局:
2.4 指标解读与调优方向
通过对比请求命中率和字节命中率,可以快速定位缓存策略的薄弱环节:
- 双高(>90%):缓存策略健康,维持现有配置即可。
- 请求命中率高,字节命中率低:小文件缓存好,但大文件(如二进制库、Docker 层)频繁回源。应检查大文件的 TTL 设置或考虑增加缓存磁盘空间。
- 请求命中率低,字节命中率高:大文件缓存有效,但大量小文件(如 POM、metadata)未命中。应检查元数据缓存策略或清理过期索引。
- 双低(<70%):缓存基本失效。需检查网络连通性、远程仓库状态、缓存存储路径是否写满、TTL 是否过短。
实战建议:在调优初期,优先关注 字节命中率,因为它直接反映带宽节省和构建加速效果。请求命中率作为辅助参考,用于发现小文件缓存问题。