2012-04-27 68 views
0

我一直在试图找出方法来提高我们的nservicebus代码性能。我搜索并偶然发现了您可以在运行/安装nservicebus主机时设置的配置文件。在NServiceBus配置文件

目前我们正在运行nservicebus主机,并且我在默认情况下阅读了这个文件,我们使用的是可用配置文件的“Lite”版本。我也从这个链接了解到:

http://docs.particular.net/nservicebus/hosting/nservicebus-host/profiles

有集成和生产概况。文档没有多少说明 - 有没有人尝试过产品配置文件,并注意到nservicebus性能有所提高?特别影响消耗队列中消息的速度?

回答

0

NSB配置文件之间的一个主要区别是它们如何处理订阅的存储。

精简版,集成和生产配置文件允许NSB配置它的可靠性。例如,lite配置文件为所有发布/订阅注册使用内存中订阅存储。这是一个问题,因为为了在Lite配置文件中注册用户,发布者必须已经在运行(因此发布者可以将订阅者列表存储在存储器中)。这意味着,如果发布者由于某种原因(或已脱机)崩溃,则所有订阅信息都将丢失(直到每个订阅者重新启动)。

因此,如果您在开发人员计算机上运行,​​并且希望快速测试您的服务如何交互,那么精简配置文件是很好的。但是,它不适用于其他环境。

集成配置文件将订阅信息存储在本地队列中。这对于简单的环境(如QA等)来说可能很好。但是,在高度分散的环境中,将订阅信息保存在数据库中是最好的,因此也就是生产配置文件。

因此,要回答您的问题,我不认为通过更改配置文件您会看到性能提升。如果有的话,从精简配置文件更改为其他配置文件之一可能会降低性能(因为您承担访问队列或数据库存储的成本)。

0

除非您自己调整日志记录,否则我们已经看到基于减少日志记录的巨大改进。阅读队列的表现是一样的。由于队列是本地的,你不会从运输中获得太多收益。我会考虑调整您的处理程序和底层基础架构。您可能想要查看调优MSMQ并查看您正在使用的磁盘等。另一个地方是查看分布式事务如何工作,假设您正在使用需要它们的远程数据库。

增加处理时间的另一个选项是增加消耗队列的线程数。这将需要许可证。如果许可证不是选项,则可以运行单个线程端点的多个实例。这要求您根据消息类型或其他内容分割您的工作。

继续扩大规模,您可以使用分销商来负载平衡工作。再次,这将需要许可证,但您可以根据需要添加更多节点。上述所有机会也适用于此拓扑。