当IIS托管(Asp.net和WCF)时,NServicebus的CPU占用率高吗?

问题描述:

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

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

我以前经历过这个。

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

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

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

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