C# webjob处理队列存储消息的最大速率是多少?
我正在使用Storage Explorer(连接到本地模拟存储)在本地开发环境中工作,我的webjob会在新队列消息中触发。为了进行测试,我发布了100条队列消息,我的webjob函数将计数器值打印到控制台日志中:C# webjob处理队列存储消息的最大速率是多少?,c#,performance,azure-storage,azure-webjobs,azure-queues,C#,Performance,Azure Storage,Azure Webjobs,Azure Queues,我正在使用Storage Explorer(连接到本地模拟存储)在本地开发环境中工作,我的webjob会在新队列消息中触发。为了进行测试,我发布了100条队列消息,我的webjob函数将计数器值打印到控制台日志中: Interlocked.Increment(ref counter); log.WriteLine($"counter: {counter}"); (计数器为静态int) 浏览100条信息需要30秒。预计的速度是多少?考虑到函数的操作非常简单,并且不
Interlocked.Increment(ref counter);
log.WriteLine($"counter: {counter}");
(计数器为静态int)
浏览100条信息需要30秒。预计的速度是多少?考虑到函数的操作非常简单,并且不写入DB/table,有什么方法可以使它更快
我发布的这篇文章与我的原始问题有关,目前没有解决方案:
当然,这取决于您的信息的大小,但我怀疑基础设施和硬件也起到了作用。您的webjob运行的应用程序服务计划是什么?您的消息有多大 根据文件 单个队列每秒可以处理大约2000条消息(每条1KB)(此处每个AddMessage、GetMessage和DeleteMessage都作为一条消息计数)
如果没有更多的细节,比如流程的完整代码,很难判断,但从理论上讲,您应该能够获得更高的吞吐量。当然,这取决于消息的大小,但我怀疑基础设施和硬件也起到了作用。您的webjob运行的应用程序服务计划是什么?您的消息有多大 根据文件 单个队列每秒可以处理大约2000条消息(每条1KB)(此处每个AddMessage、GetMessage和DeleteMessage都作为一条消息计数)
如果没有更多的细节,例如您的流程的完整代码,很难说清楚,但从理论上讲,您应该能够获得更高的吞吐量。本地存储仿真器决不能表明您将在真实的Azure存储队列中看到的性能。本地存储模拟器使用它在后台创建的本地SQL Server实例来模拟存储服务。相比之下,它是慢的。它对并发性的支持也很有限
要获得真正的测试,请在Azure中设置存储队列。为了获得最佳性能,您可以通过在同一Azure数据中心中运行正在排队和退出的进程来避免网络延迟 本地存储仿真器决不能表示您将在真实Azure存储队列中看到的性能。本地存储模拟器使用它在后台创建的本地SQL Server实例来模拟存储服务。相比之下,它是慢的。它对并发性的支持也很有限
要获得真正的测试,请在Azure中设置存储队列。为了获得最佳性能,您可以通过在同一Azure数据中心中运行正在排队和退出的进程来避免网络延迟 您正在运行本地存储模拟器吗?或者您是否针对实际的Azure存储队列在本地运行?是否针对存储模拟器在本地运行?是否针对本地存储模拟器运行?或者你是针对实际的Azure存储队列在本地运行?针对存储模拟器在本地运行Hi Peter,顺便说一句,我没有对你的评论投反对票。当我上次查看答案时,我发现是我的问题因为缺乏研究等而被投反对票。我认为你的答案有很好的信息,至少出于我的目的,因为现在我知道队列/webjob处理部署到Azure时的吞吐量。根据Rob的回答,我的性能似乎受到了影响,因为我正在本地开发/测试所有东西,并且storage emulator在Ms SQL上运行。一旦我将应用部署到Azure,我将检查我的性能。嗨,彼得,顺便说一句,我没有对你的评论投反对票。当我上次查看答案时,我发现是我的问题因为缺乏研究等而被否决。我认为你的答案有很好的信息,至少出于我的目的,因为现在我知道队列/webjob处理部署到Azure时的吞吐量。根据Rob的回答,我的性能似乎受到了影响,因为我正在本地开发/测试所有东西,并且storage emulator在Ms SQL上运行。一旦我将应用部署到Azure,我将检查我的性能。