【问题标题】:Poor performance of NServiceBus over MSMQNServiceBus 在 MSMQ 上的性能不佳
【发布时间】:2023-04-09 20:23:01
【问题描述】:

我们正在尝试将 NServiceBus/MSMQ 集成到我们当前的 Web 应用程序 (REST) 中。

运行分析器,似乎花费了 很多 时间将消息发送到队列(请参阅分析器屏幕截图 1,突出显示的 30 是整体执行的 30%时间)。仅将消息发送到 MSMQ 所花费的时间大约是在 Mongo 中保存一组全新文档(在远程服务器上运行)的两倍。

向 MSMQ 队列发送消息这么慢是正常的还是我们缺少一些配置调整?

以下是我们当前的总线配置(基于 NServiceBus 文档 - http://support.nservicebus.com/customer/portal/articles/894008-using-nservicebus-with-asp-net-mvc):

// NServiceBus configuration
Configure
    .WithWeb()
    .CastleWindsorBuilder(_container)
    .JsonSerializer()
    .Log4Net()
    .MsmqTransport()
    .IsTransactional(false)
    .PurgeOnStartup(true)
    .UnicastBus()
    .ImpersonateSender(false)
    .SendOnly();

和 web.config:

 <MessageForwardingInCaseOfFaultConfig ErrorQueue="Error" />
 <MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5" />
 <UnicastBusConfig>
   <MessageEndpointMappings>
     <add Messages="Messages" Endpoint="MessageHandlers" />
   </MessageEndpointMappings>
 </UnicastBusConfig>

【问题讨论】:

  • 你在 NServiceBus 上的哪个版本?
  • 你是如何分析这个的?是否附加了调试器?您发送了多少条消息?
  • @JohnSimons:NSB 版本是 3.3.5。我们使用 ANTS 分析器对其进行了分析,对我们的 API 进行了 25K 次调用;在每次迭代中,应用程序都会将少量小文档保存到 Mongo 中,并向 NSB 发送一条消息以进行审计。未附加调试器。在没有附加分析器的单独机器上,我们还添加了一些有关 NSB 和 Mongo 调用的计时日志,并且 NSB 发送操作始终较慢(有时慢了近 10 倍)。
  • 您每秒收到多少条消息? (我在我的机器上进行普通发送大约 4000 msg/s)
  • 你在本地运行 mongo 吗?

标签: c# .net msmq nservicebus


【解决方案1】:

这看起来像MSMQ issue。 事务型 MSMQ 根本没有针对快速写入它进行优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 2012-05-29
    • 2013-10-10
    • 2014-12-17
    • 2010-12-09
    • 2011-05-20
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多