2014-02-17 228 views
3

我正在運行Azure Web角色,它將非常小的Blob存儲到Azure存儲中。 (Blob上傳是從服務器完成的,而不是從瀏覽器完成)。我已經搜索了堆棧溢出和互聯網的其他部分,以獲得優化blob存儲性能的提示,我相信我已經檢查並實現了所有常見的嫌疑犯:上傳異步,允許無限的傳出網絡連接(現在似乎是Web角色的默認設置,不再需要在web.config或代碼中明確設置)。Microsoft Azure Blob存儲上傳性能

調整我允許的併發上傳次數會有所作爲,但無論我嘗試過什麼,我似乎都會在以上,每秒大約有1000次blob上傳。這是在Azure Web角色中運行時,位於與存儲帳戶(美國東部)相同的區域中。從家裏通過良好的互聯網連接運行時,我的速度並不低,〜700 blob/sec,這似乎告訴我,網絡延遲不是限制速度,而是存儲服務的實際處理時間。

我通常不會考慮這些服務的速度可怕,但我讀過微軟擁有每秒約20,000個存儲交易的速度,所以我對這些有點失望結果。

我想得到一些真正嘗試推動blob存儲極限的反饋。每秒約有1000次小小的上傳是否正確?或者還有什麼我應該做的改進呢?如果需要,我會發布代碼,但我寧願不會收到猜測的答案,我希望聽到開發人員能夠證實我的結果是合理的,或者他們已經看到更高的吞吐量。

我應該補充說我目前正在一個小的web角色中運行這個。我也嘗試了它在中等網絡角色,並沒有看到任何重大差異。

編輯: 經過幾天的開發和測試,我的上傳速度似乎突然增加。不是很多,但可能是每秒另一個〜200。在環顧網絡時,我注意到了Azure文檔中的一條評論,其中聲明「隨着使用量的增加,存儲帳戶會自動擴展。」所以我想知道它是否真的有更高的利率能力,但不會自動擴大規模,直到它看到持續的高成交量。對此的一些確認也將不勝感激。

+0

異步本身可能不允許最大吞吐量。您可能還需要多線程(可能需要使用線程池和適當的併發集合類型來提供線程)。 – techsaint

+0

@techsaint - 異步任務調度應根據需要使用線程池,所以我不認爲這是一個問題。另外,正如我所提到的,所有跡象都表明,這種限制似乎並不在於我能夠多快地獲得發送或接收的網絡請求,而是它發生在另一端的時間。 – reads0520

回答

1

取決於您的請求有多小,問題可能是由Nagle’s Algorithm is Not Friendly towards Small Requests引起的 - 儘管通常我會看到使用隊列/表操作的情況。嘗試禁用Nagle,讓我知道這是否有任何區別。作爲一個fyi,你必須在建立連接之前禁用它,否則這些更改不會生效。

Jason