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 防護