2012-02-24 70 views
5

我正在使用REST API將大量小項目傳遞給S3。平均有效載荷是〜10個字節。Amazon S3:每秒最大PUT請求數

的項目都進入一個水桶,並隨機名稱(即沒有字典順序)

從EC2,我已經成功的4-500每秒的速度。我正在使用一個由96個線程組成的線程池,其中有64個TCP連接。

我偶爾會得到一個HTTP 500,但還沒有收到503 - 意味着表明客戶端降低了請求的速度。

有沒有人知道我可以實際獲得什麼?我知道EC2和S3之間的管道可以管理20 MB/s的吞吐量,所以我希望做得更好一點。

回答

1

使用REST傳輸這種微小的有效負載時,您看到的性能不佳並不奇怪。

做得更好的方法是重構協議或存儲的本質,以免事務開銷不是主導因素。

事實上,管道的大小對於你的問題來說並不重要,因爲你用HTTP開銷完全填充管道;例如,如果您可以將連接的吞吐量增加一倍,那麼您將能夠發送兩倍的無用開銷,並且實際上不會改變可用數據。

+1

我意識到正在傳輸的大部分數據都是HTTP信息。我無法控制協議; S3僅限REST和HTTP。不幸的是,由於我的應用程序的性質,S3沒有批處理功能;將小塊數據打包成大塊數據是不可行的。 – user756079 2012-02-24 06:28:52

+0

有沒有你沒有把這些東西放入SimpleDB的原因,它支持批量放置操作?他們是否需要直接通過HTTP訪問? – Daan 2012-02-24 07:41:25

+0

@ user756079 - 我知道您無法控制傳輸協議,但您可以控制通過該通道發送的內容。既然有一個因素是你不能改變的,那麼你必須要做的就是重新思考你的有效載荷的內容(和大小)。 – msw 2012-02-24 13:22:46