6. 访问分析:看懂你的 CDN 报表
6.1 核心指标解读
带宽(Bandwidth)
定义:单位时间内传输的数据量
单位:bps(比特每秒)、Mbps、Gbps
CDN 带宽 = 所有边缘节点的出流量总和
注意区分:
- 计费带宽:通常按 95 峰值或日峰值计费
- 实际带宽:实时传输速率带宽与流量的关系:
1 Mbps 带宽持续跑 1 小时 = 450 MB 流量
(计算:1,000,000 bps × 3600s ÷ 8 ÷ 1024 ÷ 1024 ≈ 429 MB)QPS(Queries Per Second)
定义:每秒查询/请求数
CDN QPS = 所有边缘节点每秒处理的 HTTP 请求总数
注意:QPS 高不代表带宽高
- 小文件场景:QPS 很高,带宽不高
- 大文件场景:QPS 不高,带宽很高命中率(Hit Ratio)
定义:在 CDN 边缘节点命中的请求占总请求的比例
计算公式:
命中率 = (命中数 / 总请求数) × 100%
或
命中率 = (1 - 回源流量 / 总出流量) × 100%
行业标准:
- 图片/视频/JS/CSS:> 95%
- HTML 页面:50-80%(视更新频率)
- API 接口:通常不缓存或极低命中率低的常见原因:
| 原因 | 现象 | 解决方案 |
|---|---|---|
| 缓存时间太短 | TTL 只有几分钟 | 根据文件类型调整 TTL |
| 查询参数变化 | URL 带随机数 | 配置忽略特定参数 |
| 缓存键设置不当 | 不该区分的被区分了 | 优化缓存键规则 |
| 内容更新频繁 | 文件经常被覆盖 | 使用版本号或 hash 文件名 |
| 首次访问多 | 新内容或新节点 | 提前预热 |
6.2 日志分析与问题排查
CDN 日志字段解析
典型 CDN 访问日志包含以下字段:
时间 | 客户端 IP | 请求方法 | URL | HTTP 状态码 | 响应大小 | 缓存状态 | 响应时间 | Referer | User-Agent
示例:
2024-01-15 14:32:01 | 114.114.114.114 | GET | https://cdn.example.com/images/photo.jpg | 200 | 153600 | HIT | 23 | https://example.com/ | Mozilla/5.0...关键字段解释:
| 字段 | 说明 | 分析价值 |
|---|---|---|
cache_status | 缓存状态 | HIT(命中)、MISS(未命中)、EXPIRED(过期) |
response_time | 响应时间(ms) | 判断用户体验,>500ms 需优化 |
http_status | HTTP 状态码 | 404/500 错误排查 |
bytes_sent | 发送字节数 | 带宽统计 |
常见问题排查
问题 1:用户反映访问慢
排查步骤:
1. 看日志 response_time
- 如果很大(>500ms):检查是缓存 MISS 还是源站慢
2. 检查 cache_status
- HIT:缓存命中,慢可能是文件太大或节点问题
- MISS:未命中,需优化缓存策略或命中率
3. 检查客户端 IP 分布
- 某些地区慢:可能是该节点负载高或覆盖不足问题 2:缓存不生效,每次都回源
排查清单:
□ 源站响应头是否有 Cache-Control: no-cache / private?
□ URL 是否带随机参数(如 ?_=123456)?
□ 缓存键配置是否正确?
□ TTL 设置是否过短?
□ 是否命中浏览器本地缓存而非 CDN?问题 3:费用暴涨
排查方向:
1. 看账单明细
- CDN 流量费高:检查是否有大文件被频繁访问,或被盗链
- 回源流量费高:检查命中率是否骤降
- 请求数费用高:检查是否有 CC 攻击或爬虫
2. 看访问日志
- 是否有大量 404 请求(可能是扫描或配置错误)
- Referer 是否异常(判断是否被盗链)
3. 安全设置
- 开启防盗链(Referer 白名单)
- 开启 IP 黑名单/白名单
- 配置 CC 防护