storage queue
只要分发者在分发消息,控件中的数字就会上下跳跃。进入 的消息control queue
将立即从该队列中弹出并进入storage queue
. 进入primary queue
分发器的消息将立即导致storage queue
弹出的第一条消息。很难解释正在运行的分发服务器队列中的消息数量,因为当您使用计算机管理或队列资源管理器查看这些数字时,它们已经发生了变化。
极端情况是这样的:
1. 分发器的主输入队列中没有消息,并且任何工作人员都没有工作。
- 输入队列:0
- 控制队列:0
- 存储队列:worker数*每个worker配置的线程数
2.所有工人都在满负荷工作。没有人能够承担更多的工作。
- 输入队列:0+(随着新消息的进入而增长)
- 控制队列:0
- 存储队列:0
control
在一个正在运行的系统中,它可以是这两个极端之间的任何东西,因此,不幸的是,仅从and的快照很难说太多storage queue
。
一些故障排除提示:
如果storage queue
为空,则分发者不能分发更多的工作。它不知道将其发送到哪里。如果所有工作人员都被完全占用,就会发生这种情况,因为在control queue
他们完成处理消息之前,他们不会将任何就绪消息发送回。
如果与storage queue
所有工作线程的工作线程总数相比始终较小,则您正在接近工作人员的总最大容量。
我建议您开始查看工人的日志,看看他们正在做的工作是否比平时花费更长的时间。较慢的数据库/第三方集成?
要检查的另一件事是,是否有任何 IO 重的东西添加到托管分发服务器的机器上。如果分发器已经以接近最大容量运行,添加额外的 IO 可能会减慢机器上的 MSMQ,从而降低吞吐量。