MSMQ接收邮件非常慢


8

我们有一个相当大的MSMQ环境设置,今天它决定停止。

(一切都是vSphere 4.0 Update 1下的VM)

有8个Web服务器从网络上的客户端接收数据。这些机器都安装了MSMQ,只需将MSMQ消息发送到主MSMQ服务器。当前,邮件堆积在出站队列中。这些计算机是Windows 2008 Web Edition,具有2 Gig的RAM和2个vCPU。

我们有一个群集MSMQ服务器(Windows群集服务器),它从8个Web服务器获取消息。队列中的数据量没有限制。硬盘驱动器为50 Gig,有46 ​​Gig的可用空间。这些计算机是Windows 2008 Enterprise Edition,具有8 Gig的RAM和4个vCPU。该群集曾经有2个vCPU,但是CPU负载达到了100%,所以我将Windows群集的两个节点都增加到4个vCPU。

有4个应用服务器从队列中读取消息并进行处理。

通常,这一切都可以很好地工作,但不是今天。

今天早晨,一切进展都很缓慢。8个Web服务器当前在出站队列中显示多达30万条消息。群集服务器当前在队列中显示超过一百万条消息(有些消息低至200k)。

如果我在8个Web服务器上查看perfmon,则表明我平均每秒发送2条消息。如果我查看集群上的perfmon,则表明每秒大约有7条消息进入集群。

每个正在读取的机器都不会收到太多消息。最快的服务每秒接收10-12条消息,最慢的服务显示0或1。

最近唯一的变化是我们将前端Web服务器的数量从4个更改为8个。我们大约在2周前完成了此操作,没有出现问题。在星期二,我们关闭了它们的电源,以查看其余4个如何处理负载。在星期三,我们重新打开了四台新机器。

群集上的磁盘显示非常低的IO并且没有排队。

为了安全起见,我已经将PowerPath更新为最新版本,但这没有任何帮助。

8个Web服务器位于一个vLAN上,群集服务器和应用程序服务器位于另一个vLAN上。vLAN之间没有防火墙。

在任何计算机上的应用程序或系统日志中,没有任何用处。


2
事实证明,导致MSMQ读取缓慢的原因实际上是一个应用程序问题。从队列中读取的服务然后进入文件共享中的内容。文件共享开始花费的时间越来越长,这导致服务运行速度变慢,导致队列备份,现在我们一团糟。显然,我们的用户群增长速度远远超过了计划,并且我们正在最大化承载文件共享的SAN上的RAID组之一。周一,我们将与我们的供应商抢购更多SAN空间。
mrdenny

2
我们没有看到此队列提前增长,因为我们的监视服务器是Windows 2003服务器,并且Windows 2003计算机无法远程监视群集的Windows 2008 MSMQ队列。监视服务器已经计划在三月份进行升级。<叹>
mrdenny

Answers:


4

每当有人说他们收到超过一百万条消息时,警报喇叭就会响起!消息需要管理内核(页面缓冲池)内存。如果消息数量如此之多,则可能是在耗尽群集服务器上可用的内容。队列中消息数量的最佳数量为零-基本上确保您通常可以更快地处理消息。

我建议先关闭Web服务器并完全处理积压的消息,然后再将它们重新联机。

此博客文章的参考项目4:http : //blogs.msdn.com/johnbreakwell/archive/2006/09/18/insufficient-resources-run-away-run-away.aspx

干杯John Breakwell(MSFT)


此时,我已经接到PSS的电话,我正在等待他们现在给我回电。我已阻止消息流入Web服务器上的队列。此时,Web服务器上的出站队列已满,每个都有1 Gig的信息。群集队列总共有大约450万条消息。通常,由于我们可以非常快速地处理数据,因此队列中的消息数量很少。发生了什么事(不确定是什么),这一切都变成了地狱。
mrdenny

约翰,谢谢你帮我偷看。根据tmq的输出,我猜这是我的问题。池限制(大约以KB计算):分页:限制307,200,用于397%,非分页:限制262,144,用于49%。如果您在MVP峰会期间在雷德蒙德(Redmond),请告诉我,啤酒在我身上。
mrdenny

@ user34024我们发现了最初的问题,我已经在上面的评论中放入了它。谢谢您的帮助。
mrdenny

1

我问了一位系统管理员,他说我们的魔点在于最多4台Web服务器在虚拟机上命中MSMQ盒,然后他们移到硬件盒来解决。另外,尝试捕获数据包以查看发生了什么。身份验证也要进入AD吗?对于MSMQ来说,您需要限制网络路径以及可能的身份验证路径。

HTH,查克。


当您有多于4个Web服务器与单个MSMQ服务器通信时,他们是否能够确定到底是什么导致了速度下降?该存储是基于iSCSI的直接SAN存储,因此应该说不是存储问题。我将尝试关闭8台Web服务器中的4台,然后查看我的想法。如果我必须告诉老板购买新硬件,那将需要一个该死的充分理由。
mrdenny'2

只是消息的聊天。他们还发现了一些身份验证缺失配置。
SQLGuyChuck'2

我想我将下载wireshark并将其放在MSMQ服务器上,然后查看显示的内容。无法将其放在Web服务器上,由于网络流量负载,它在大约30秒后崩溃。
mrdenny'2

因此,我在计算机上启动了WireShark,看到来自正在监视的一台Web服务器的消息之间的间隔大约为3秒。不用说,这看起来并不好。
mrdenny'2

我们发现了最初的问题,我已经在上面的评论中提出了问题。谢谢您的帮助。
mrdenny'2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.