Amazon-Ec2
EC2 到 S3 的上傳速度隨著實例的增加而降低
我有一個從數據庫獲取數據、執行一些程式碼並將結果上傳到 S3 儲存桶的工作。程式碼執行大約需要 1 分鐘,結果文件大約為 10MB。EC2 實例和 S3 儲存桶都在 us-west-1 中。
我一次在多個 EC2 m3.large 實例上執行此作業的單獨實例。最多大約 175 個實例,上傳時間不到一秒。並發請求不是很多;可能高達 5/秒。在我將其增加到 200 個實例後不久,上傳需要 40-60 秒,有時甚至更長。
看起來這不應該是發送到 S3 的異常數據量,並且各個機器似乎執行良好(CPU 40-50%)。這可能是什麼原因造成的?我可以達到網路頻寬限制嗎?如果是這樣,我怎麼知道?
這些文件以唯一的 id 命名,因此我嘗試反轉 id 以分散密鑰(如https://cloudnative.io/blog/2015/01/aws-s3-performance-tuning/所述)。這並沒有改變行為。
您可能遇到了 NAT 實例的瓶頸。通過一台伺服器驅動 200 台伺服器的大型 HTTP 請求可能會使它負擔過重(無論是 CPU 還是網路頻寬)。使用多個 NAT 實例將您的伺服器拆分到多個子網中,或者將它們放在一個公共子網中,直接聯網到 S3,而不是通過 NAT。