天天看點

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 節點緩存錯誤内容的問題。

繼續閱讀