CloudFront - 與歐洲相比,北美的失誤率要高得多
我正在從 CloudFront 提供我的軟體下載。北美的失誤率遠高於歐洲。美國的失誤率為 55.7%,而歐洲為 19.69%。
CloudFront 配置為“最佳性能”。文件儲存在俄亥俄州地區的 S3 儲存桶中。
為什麼這兩個地區的失誤率有如此大的差異?
與歐洲相比,該問題似乎與北美更多的入網點和更少的請求有關。
似乎我們正面臨一個 CDN 挑戰:記憶體空間的競爭。我們的文件非常大(例如,它們比圖像佔用更多的記憶體空間)。可能我們的內容沒有保留在記憶體中,因為北美每個接入點的請求率不足以將其保留在 CloudFront 的記憶體中。
兩天前,我們切換到另一個在北美擁有較少接入點的提供商。這兩天的累計統計數據顯示,我們現在的失誤率只有 11%。因此問題就解決了。
更新:
似乎命中率/未命中率的比例並不能說明 CDN 性能的全部情況。我配置了 4 個 CDN 提供商:CloudFront、Google CDN、Fastly、BunnyCDN + 將 Google Storage 包含在測試中。所有 CDN 都配置為使用盡可能多的 POP 伺服器。Google Storage 在美國處於多區域模式。
然後我將 Uptrends 和 Pingdom 配置為每 5 分鐘下載一個測試文件。我們提供軟體下載服務,該配置大致類似於我們看到的真實世界負載——每分鐘左右來自世界各地的下載請求。這樣的負載使 CDN 不太有效,因為文件往往會在 CDN 邊緣節點上過期。
上升趨勢允許我們選擇測試地點,我選擇了以下所有城市:北美、澳大利亞、紐西蘭、德國、法國、西班牙、意大利、波蘭和俄羅斯。Pingdom 不允許更改檢查點位置,並提供來自歐洲和美國的隨機位置。不幸的是,Pingdom 不包括澳大利亞檢查站。
測試文件大小為 43 Mb。我在所有提供商上執行了大約 20 個小時的測試。測試結果如下:
有趣的是,在兩個測試平台上,普通的 Gloud Storage 都比 Google CDN 快。這可能是我這邊的配置錯誤,或者 Google CDN 不會長時間在其節點上保留大文件。
上升趨勢中有下載超時。當伺服器在 45 秒內無法下載文件時會發生超時。CloudFront 有 2 次超時,Google Storage 有 4 次,Google CDN 有 8 次超時,BunnyCDN 有 6 次超時,Fastly 在 20 小時內有 6 次超時。