我正在尝试在Win2008r2服务器上运行一些MSMQ性能测试。理想情况下,我想模拟数千个工作站(每个工作站)发送5 msgs / sec。
这样做的一种方法是与亚马逊合作,但我想知道这是否可以通过其他方式完成。
我教过使用在单个工作站上发送大量msg的自定义工具可以完成这项工作,但似乎它们是一些内部机制,它影响我试图模拟的真实现实表示。我可以在工作站上发送2000msgs / sec,但是由于OUTGOING队列和其他机制,服务器似乎吞下了大块数据(而且我只注意到,最多只有50msgs / sec峰值)
我相信在将数据发送到服务器之前必须从工作站进行某种开销操作,我只通过模拟一个工作站(或更多工作站)来松散。
有什么想法吗?
P.S。我正在使用私有事务队列。 Win7在工作站上。 MSMQ 5
答案 0 :(得分:3)
模拟吞吐量很容易,但模拟多个MSMQ客户端非常困难。每个客户端都有一个唯一的IP地址,它有自己的客户端 - 队列 - 管理器 - 服务器 - 队列 - 管理器网络连接。使用亚马逊生成大量Windows客户端实例可以解决这个问题,但我还没有看到任何适用于标准PC的解决方案。
只是发送大量消息无法模拟的开销是网络连接使用的内核内存和用于处理传入消息的线程。网络连接非常昂贵,如果您有太多同时连接的客户端,服务器最终将失败。
当您不断发送消息时,每个客户端都将与服务器建立持久连接。这对速度有利,但对内存/线程使用不利。 5,000个客户端将需要功能强大的64位服务器。
So, what's the limit on connections to an MSMQ server?
"What are MSMQ's limits?" If I had a farthing for every time...
Insufficient Resources? Run away, run away!
FIX: Kernel-pool memory may become exhausted when many clients connect to Message Queuing