OSS Content-legnth 異常

背景:

用戶的服務架構是

Client -> CDN -> OSS

當客戶端下載 CDN 內容是如果出現 Content 和用戶源站 (OSS) 不一致的情況時可以按照如下步驟進行排查。x-oss-request-id via content-length lastmodify

  • 先固定 CDN 節點下載 object 確認出現問題的節點,測試的響應頭中我們要保留的幾個排障信息。
HTTP/1.1 200 OK
Server: Tengine
Content-Type: application/vnd.android.package-archive
Content-Length: 12763521
Connection: keep-alive
Date: Sun, 18 Nov 2018 07:23:07 GMT
Cache-Control: max-age=3600
Expires: Sun, 18 Nov 2018 08:23:07 GMT
x-oss-request-id: 5BF1135B94D2DCB3BEB5EC9B
Accept-Ranges: bytes
ETag: "53184A3BF5AF6ED719B7EB05EBE72758"
Last-Modified: Wed, 14 Nov 2018 14:01:55 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 11413790404635767721
x-oss-storage-class: Standard
Content-MD5: UxhKO/WvbtcZt+sF6+cnWA==
x-oss-server-time: 63
Via: cache32.l2cm9[0,304-0,H], cache13.l2cm9[42,0], kunlun2.cn2364[0,200-0,H], kunlun5.cn2364[34,0]
Age: 3210
Ali-Swift-Global-Savetime: 1542225117
X-Cache: HIT TCP_HIT dirn:11:175092793
X-Swift-SaveTime: Sun, 18 Nov 2018 07:29:51 GMT
X-Swift-CacheTime: 3600
Timing-Allow-Origin: *
EagleId: 7250bb1915425289976144403e
  • 在固定源站 OSS 測試看下 content-length,經過確實原站的 OSS 是正確的,但是爲什麼 CDN 上存儲的是錯誤的呢?
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Sun, 18 Nov 2018 08:25:58 GMT
Content-Type: application/vnd.android.package-archive
Content-Length: 12766521
Connection: keep-alive
x-oss-request-id: 5BF12216F3150D6E6CB16E7F
Accept-Ranges: bytes
ETag: "53184A3BF5AF6ED719B7EB05EBE72758"
Last-Modified: Wed, 14 Nov 2018 14:01:55 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 11413790404635767721
x-oss-storage-class: Standard
Content-MD5: UxhKO/WvbtcZt+sF6+cnWA==
x-oss-server-time: 90

既然找到了 CDN 上存儲的資源是錯誤,我們還要確認其他節點存儲的資源是否一致,可以通過 17測 等測試網絡批量測試一下 CDN 存儲的 Content-length 是否和原站一致。

  • 如果一致,那麼問題就是出現在客戶端的請求上,比如客戶是 206 的請求,range 的範圍不是合法的,不在文件的長度範圍內。
  • 或者客戶端使用的是 http 訪問出現截圖導致文件下載是錯誤的文件。這種情況客戶端可以採用 https 的方式訪問 CDN 可以方式被劫持篡改內容的情況
  • 如果不一致:

    • 首先將測試看下是有多少個節點出現不一致的情況,保留好證據,然後在 CDN 的控制檯上調用刷新接口將 CDN 存儲的錯誤文件刷新調。
    • 如果是部分節點存儲的 content-length 正確,部分不正確,說明客戶端再請求 CDN 回源到 OSS 時節點拉取到的是錯誤文件,所以導致邊緣的 CDN 拿到的也是錯誤,這種情況可以聯繫阿里雲工程師處理 CDN 節點緩存錯誤內容的問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章