2017-02-20 52 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数据中心中排队和出队的进程来避免网络延迟。

相关问题