2017-02-20 56 views
0

我正在使用存儲資源管理器(連接到本地模擬存儲)在本地開發環境中工作,並且我的web作業被新隊列消息觸發。爲了測試,我發佈100點隊列中的消息,我的webjob函數打印計數器值控制檯日誌:webjob可以處理隊列存儲消息的最大速率是多少?

 Interlocked.Increment(ref counter); 
     log.WriteLine($"counter: {counter}"); 

(計數器是一個靜態INT)

它需要30秒要經過100級的消息。速度/速度是否預計?考慮到函數的操作相當簡單,並且不寫入DB/table,有什麼辦法可以使它更快一些?

我張貼這關係到我原來的問題到目前沒有解決方法: Slow azure queue webjob performance (local dev)

+0

您是否針對本地存儲模擬器運行?或者,您是否在本地運行實際的Azure存儲隊列? –

+0

本地運行存儲模擬器 –

回答

0

這取決於你當然消息的大小,但我懷疑的基礎設施和硬件發揮作用,以及。您的webjob正在運行什麼應用程序服務計劃以及您的消息有多大?

根據該文檔https://docs.microsoft.com/en-us/azure/storage/storage-performance-checklist#queues

單個隊列可以處理每秒約2000的消息(1KB每個)(各方法addMessage,GetMessage函數,和DeleteMessage可以算作一個消息在這裏)。

沒有更多的細節,像你的過程的完整代碼很難說,但理論上你應該能夠獲得更多的吞吐量。

+0

嗯donwnvote但沒有評論。無法瞭解 –

+0

嗨,彼得,我沒有downvote你的評論順便說一句。當我上次回顧了答案時,我發現這是我的問題,因爲缺乏研究等而被低估了。我認爲您的答案有很好的信息,至少對我而言是這樣,因爲現在我知道部署/ webjob處理時的吞吐量到Azure。基於Rob的回答,似乎我的表現受到了影響,因爲我正在本地開發/測試所有內容,並且存儲模擬器在Ms SQL上運行。將應用程序部署到Azure後,我會檢查自己的性能。 –

2

本地存儲模擬器並不表示您將看到的實際Azure存儲隊列的性能。本地存儲模擬器使用它在後臺創建的本地SQL Server實例來模擬存儲服務。它比較慢。它對併發性的支持也有限。

要獲得真正的測試,請在Azure中配置存儲隊列。爲獲得最佳性能,您可以通過運行在同一個Azure數據中心中排隊和出隊的進程來避免網絡延遲。

相關問題