Azure服务总线速度

6
当我尝试从一个简单的控制台应用程序(非调试模式)向 Azure 服务总线队列发送 1000 条简单消息时,使用 http 模式需要 90 秒。
而使用标准 nettcp 模式需要 70 秒。
这是大家都得到的速度吗?我希望它能更快,但也许这就是正确的速度?
2个回答

6

你是否在同一个线程中完成所有操作?尝试使用多个线程/任务并行提交消息。此外,如果你想要更高的吞吐量,可以尝试对app.config进行一些更改:

  <system.net>
    <settings>
      <servicePointManager expect100Continue="false" useNagleAlgorithm="false"/>
    </settings>
    <connectionManagement>
      <add address = "*" maxconnection = "48" />
    </connectionManagement>
  </system.net>

最后,尝试在Windows Azure VM内执行控制台应用程序(最好是同一数据中心)。这将排除您的WAN连接对其产生的任何影响。

尝试使用中等或更大的虚拟机,较小的虚拟机具有有限的IO。 - Richard Astbury
4
Parallel.For(0, 1000, i => SendM(i, client)) 和您的配置更改将时间缩短到了10秒。谢谢! - Martin

1

另外,考虑利用批量发送方法。Azure SDK中的Service Bus Client Queue有一种方法可以一次性发送一批消息。它会以更大的调用为代价减少总网络开销。您可以调整批处理大小以使其达到最大值,并在填满一个批处理或达到一定的超时时间之前排队等待消息。这样可以实现批处理,同时仍能在合理的时间内保持响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接