我正在使用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)
答案 0 :(得分:2)
本地存储模拟器绝不表示您将在真正的Azure存储队列中看到的性能。本地存储模拟器使用它在后台创建的本地SQL Server实例来模拟存储服务。比较慢。它对并发性的支持也有限。
要获得真正的测试,请在Azure中配置存储队列。为了获得最佳性能,您可以通过运行在同一Azure数据中心中排队和出列的进程来避免网络延迟。
答案 1 :(得分:0)
当然,这取决于您的消息大小,但我怀疑基础架构和硬件也起着重要作用。您的webjob运行的应用服务计划是什么以及您的消息有多大?
单个队列每秒可以处理大约2,000条消息(每条1KB)(每个AddMessage,GetMessage和DeleteMessage计数在此处作为消息)。
如果没有更多详细信息,例如您的流程的完整代码,很难说,但理论上您应该能够获得更多的吞吐量。