webjob可以以什么最大速率处理队列存储消息?

时间:2017-02-20 17:25:49

标签: c# performance azure-storage azure-webjobs azure-queues

我正在使用Storage Explorer(连接到本地模拟存储)开发本地开发环境,并在新队列消息上触发我的webjob。为了测试,我发布了100条队列消息,我的webjob函数将一个计数器值输出到控制台日志:

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

(计数器是静态int)

通过100条消息需要30秒。是期望的速度/速度?考虑到函数的操作相当简单并且不能写入DB / table,有没有办法让它更快?

我发布这与我原来的问题有关,目前还没有解决方案: Slow azure queue webjob performance (local dev)

2 个答案:

答案 0 :(得分:2)

本地存储模拟器绝不表示您将在真正的Azure存储队列中看到的性能。本地存储模拟器使用它在后台创建的本地SQL Server实例来模拟存储服务。比较慢。它对并发性的支持也有限。

要获得真正的测试,请在Azure中配置存储队列。为了获得最佳性能,您可以通过运行在同一Azure数据中心中排队和出列的进程来避免网络延迟。

答案 1 :(得分:0)

当然,这取决于您的消息大小,但我怀疑基础架构和硬件也起着重要作用。您的webjob运行的应用服务计划是什么以及您的消息有多大?

根据文档the documentation

  

单个队列每秒可以处理大约2,000条消息(每条1KB)(每个AddMessage,GetMessage和DeleteMessage计数在此处作为消息)。

如果没有更多详细信息,例如您的流程的完整代码,很难说,但理论上您应该能够获得更多的吞吐量。