【问题标题】:Azure Service Bus speedAzure 服务总线速度
【发布时间】:2012-10-03 01:30:15
【问题描述】:

当我尝试从一个简单的控制台应用程序(非调试模式)向我的 Azure 服务总线队列发送 1000 条简单消息时,使用 http 模式需要 90 秒。

使用标准 nettcp 模式需要 70 秒。

其他人的速度也一样吗?我预计它会更快,但也许这是正确的?

【问题讨论】:

    标签: azure servicebus azureservicebus


    【解决方案1】:

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

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

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

    【讨论】:

    • 尝试使用中型或更大的虚拟机,较小的虚拟机的 IO 有限。
    • Parallel.For(0, 1000, i => SendM(i, client)) 并且您的配置更改将时间减少到 10 秒。谢谢!
    【解决方案2】:

    还可以考虑利用批量发送方法。 Azure SDK 在服务总线客户端队列上有一个方法,允许您一次发送一批消息。它以更大的调用为代价减少了总网络开销。您可以将批处理大小调整为适合您的最大值,并将消息排队,直到您填满批处理或达到特定超时。这使您可以进行批处理,但仍然可以在合理的时间内做出响应。

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2022-01-09
      • 2021-12-30
      相关资源
      最近更新 更多