IIS托管(Asp.net和WCF)时,NServicebus的CPU使用率很高?

时间:2012-08-07 14:37:56

标签: nservicebus nservicebus3

我们注意到在将NServicebus添加到我们的ASP.net MVC应用程序后,CPU使用率从5%上升到50%。这是在没有任何负载的服务器上。我们注意到托管WCF应用程序的另一台服务器上的行为相同。在尝试了不同的事情之后,我们发现如果我们将总线配置为仅发送,则CPU使用率降至5%。当总线没有配置为仅发送时,有人知道为什么cpu使用率如此之高?

2 个答案:

答案 0 :(得分:3)

我以前经历过这个。

我发生的事情是我设置了一个应用程序池,它最初是作为网络服务运行的。在我有机会将应用程序池标识设置为域级用户(用于访问文件共享等)之前,页面已被命中,因此NServiceBus安装程序已经创建了具有网络服务凭据的队列。

当我设置应用程序池用户时,突然间它没有对队列的适当权限。

正常情况下,如果没有可用的消息,NServiceBus会检查超时的消息,但在这种情况下,它会进入一个非常紧密的循环“是否有消息?我没有权限。是否有消息?我不知道没有许可。“所以你得到了非常高的CPU。

我通过删除队列并允许NServiceBus使用适当的权限重新创建它来解决问题。

答案 1 :(得分:1)

高CPU的原因可能是在队列中查找消息的NServiceBus代码,尽管我发现有点难以置信。仅发送模式阻止NServiceBus查找队列中的消息。