1

当我将使用 nservice 的站点部署到新的生产机器时,它的速度非常慢......

经过一些调试,我发现 mqsvc.exe 占用了 50% 的 CPU 使用率,而另外 50% 被 w3wp.exe 占用

我在这里找到了这篇文章:http: //geekswithblogs.net/michaelstephenson/archive/2010/05/07/139717.aspx

其中推荐了以下内容:

  • 确保将 NserviceBus 通用主机的 Windows 服务设置为正确的凭据

  • 确保您已设置具有正确权限的队列

  • 确保在 NServiceBus 中打开正确的日志记录配置

所以我认为问题与权限有关,但即使尝试正确设置权限(我认为)我仍然无法解决问题。

4

2 回答 2

3

问题最终确实是网站需要被授予对队列的明确权限。

我在网上找到了许多资源告诉我这一点,但我仍然不得不花费大量时间来查看确切需要访问哪个帐户...结果发现,由于我的应用程序池设置为作为 ApplicationPoolIdentity 运行,我需要通过将以下帐户添加到 nservicebus 队列来授予帐户权限:

IIS AppPool\{APP POOL NAME}

我授予了完全访问权限,但我相信您可以根据需要对其进行一些改进。

希望这将帮助遇到相同问题的任何人。

(这是我第一次尝试“回答你自己的问题”机制,所以如果我做错了什么,请告诉我..)

于 2012-11-28T15:28:44.437 回答
3

如果您允许 NServiceBus 创建自己的队列,那么它将使用所需的正确权限创建它们。

当您设置 Web 应用程序,然后创建队列,然后应用程序在其下运行的身份发生更改时,问题就出现了。然后你就会得到这个问题。NServiceBus 尝试检查队列中的消息,但它无权执行此操作,因此它会立即一遍又一遍地重试,并且您会触发处理器。

修复:删除队列。重新启动 Web 应用程序。NServiceBus 接管。

编辑:如评论中所述,NServiceBus 3.x 默认情况下不会调用安装程序,这意味着除非您要求,否则不会在生产中自动创建队列。有关更多详细信息,请参阅安装程序的文档页面。

对于 Web 应用程序(或任何其他不使用 NServiceBus.Host 的情况),您可以调用安装程序作为 fluent 配置的一部分。NServiceBus 下载中有一个完整的示例,但这里是GitHub 上相关文件的链接

于 2012-11-28T18:20:39.517 回答