当我将使用nservice的网站部署到新的生产框时,它的速度非常慢......
经过一些调试后,我发现mqsvc.exe占用了50%的CPU占用率,另外50%占用了w3wp.exe
我在这里发现了这篇文章: http://geekswithblogs.net/michaelstephenson/archive/2010/05/07/139717.aspx
建议如下:
确保将NserviceBus Generic Host的Windows服务设置为正确的凭据
确保您设置了具有正确权限的队列
确保在NServiceBus中打开正确的日志记录配置
所以我认为问题与权限有关,但即使尝试正确设置权限(我认为),我仍然无法解决问题。
答案 0 :(得分:3)
该问题最终导致网站需要被授予对队列的显式权限。
我在网上发现了一些资源告诉我这个,但是我仍然需要花费大量的时间来查找正好需要访问的WHICH帐户...结果是因为我的应用程序池设置为以ApplicationPoolIdentity运行,我需要通过将以下帐户添加到nservicebus队列来授予帐户权限:
IIS AppPool\{APP POOL NAME}
我授予了完全访问权限,但我确信如果需要,你可以稍微改进一下。
希望这可以帮助遇到同样问题的任何人。
(这是我第一次尝试“回答你自己的问题”机制,所以如果我做错了,请告诉我。)
答案 1 :(得分:3)
如果您允许NServiceBus创建自己的队列,那么它将使用所需的正确权限创建它们。
当您设置Web应用程序,然后创建队列,然后在更改下运行应用程序的标识时,会出现此问题。然后你就得到了这个问题。 NServiceBus尝试检查队列中的消息,它没有访问权限,因此它会立即重试,并且会使处理器加速。
修复:删除队列。重新启动Web应用程序。 NServiceBus接管。
编辑:如评论中所述,默认情况下NServiceBus 3.x不会调用安装程序,这意味着除非您要求,否则不会在生产中自动创建队列。有关详细信息,请参阅Installers上的文档页面。
对于Web应用程序(或您未使用NServiceBus.Host的任何其他情况),您可以作为Fluent配置的一部分调用安装程序。 NServiceBus下载中有一个完整的示例,但这里是link to the relevant file on GitHub。