1

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

4

2 回答 2

3

我以前经历过这种情况。

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

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

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

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

于 2012-08-13T16:30:26.947 回答
1

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

于 2012-08-08T14:45:19.450 回答