Nservicebus 如何解释分发服务器中的消息数';s存储和控制队列?

Nservicebus 如何解释分发服务器中的消息数';s存储和控制队列?,nservicebus,nservicebus-distributor,Nservicebus,Nservicebus Distributor,本文介绍了Nsb主节点用于控制消息加载的控制队列,但我仍然不清楚如何解释该队列中消息数量的不均衡性: 我正在观察我的Nsb服务的慢度,这在以前从未经历过慢度。由于某些原因,与过去相比,每个主节点创建的并行线程更少,并且辅助节点或主节点配置没有任何变化,比如要分配的最大线程数。我试图弄清楚是主节点不想为工人提供服务,还是工人不想承担更多的工作 我看到控制队列中的消息量从15跳到40,而存储只有5-8条。我是否应该将其理解为员工准备工作,而分销商不能向他们发送更多信息?谢谢只要分发服务器正在分发消息

本文介绍了Nsb主节点用于控制消息加载的控制队列,但我仍然不清楚如何解释该队列中消息数量的不均衡性:

我正在观察我的Nsb服务的慢度,这在以前从未经历过慢度。由于某些原因,与过去相比,每个主节点创建的并行线程更少,并且辅助节点或主节点配置没有任何变化,比如要分配的最大线程数。我试图弄清楚是主节点不想为工人提供服务,还是工人不想承担更多的工作


我看到控制队列中的消息量从15跳到40,而存储只有5-8条。我是否应该将其理解为员工准备工作,而分销商不能向他们发送更多信息?谢谢

只要分发服务器正在分发消息,控件和
存储队列中的数字就会上下跳跃。进入
控制队列
的消息将立即从该队列弹出并进入
存储队列
。进入分发服务器的
主队列
的消息将立即弹出
存储队列
的第一条消息。 很难解释正在运行的分发服务器队列中的消息数,因为当您使用计算机管理或队列资源管理器查看这些消息数时,它们已经改变了

极端情况如下:

1。分发服务器的主输入队列中没有消息,任何工作人员都没有工作。

  • 输入队列:0
  • 控制队列:0
  • 存储队列:工作线程数*每个工作线程配置的线程数
2。所有工人都在满负荷工作。没有人能够承担更多的工作。

  • 输入队列:0+(随着新消息的传入而增加)
  • 控制队列:0
  • 存储队列:0
在一个运行的系统中,它可以是介于这两个极端之间的任何东西,因此,不幸的是,仅仅从
控件
存储队列
的快照就很难说什么

一些疑难解答提示:

  • 如果
    存储队列
    为空,则分发服务器无法分配更多工作。它不知道把它送到哪里去。如果所有工作人员都已完全占用,则会发生这种情况,因为在完成消息处理之前,他们不会将任何就绪消息发送回
    控制队列

  • 如果与所有工作线程中的工作线程总数相比,
    存储队列
    始终很小,则您正在接近工作线程的最大总容量

  • 我建议你开始查看工人们的日志,看看他们正在做的工作是否比平时花的时间更长。较慢的数据库/第三方集成

  • 另一件要检查的事情是,托管分发服务器的机器上是否添加了任何IO重的内容。如果分发服务器已在接近最大容量的情况下运行,则添加额外IO可能会降低机箱上的MSMQ速度,从而降低吞吐量


只要分发服务器正在分发消息,控件和
存储队列中的数字就会上下跳跃。进入
控制队列
的消息将立即从该队列弹出并进入
存储队列
。进入分发服务器的
主队列
的消息将立即弹出
存储队列
的第一条消息。 很难解释正在运行的分发服务器队列中的消息数,因为当您使用计算机管理或队列资源管理器查看这些消息数时,它们已经改变了

极端情况如下:

1。分发服务器的主输入队列中没有消息,任何工作人员都没有工作。

  • 输入队列:0
  • 控制队列:0
  • 存储队列:工作线程数*每个工作线程配置的线程数
2。所有工人都在满负荷工作。没有人能够承担更多的工作。

  • 输入队列:0+(随着新消息的传入而增加)
  • 控制队列:0
  • 存储队列:0
在一个运行的系统中,它可以是介于这两个极端之间的任何东西,因此,不幸的是,仅仅从
控件
存储队列
的快照就很难说什么

一些疑难解答提示:

  • 如果
    存储队列
    为空,则分发服务器无法分配更多工作。它不知道把它送到哪里去。如果所有工作人员都已完全占用,则会发生这种情况,因为在完成消息处理之前,他们不会将任何就绪消息发送回
    控制队列

  • 如果与所有工作线程中的工作线程总数相比,
    存储队列
    始终很小,则您正在接近工作线程的最大总容量

  • 我建议你开始查看工人们的日志,看看他们正在做的工作是否比平时花的时间更长。较慢的数据库/第三方集成

  • 另一件要检查的事情是,托管分发服务器的机器上是否添加了任何IO重的内容。如果分发服务器已在接近最大容量的情况下运行,则添加额外IO可能会降低机箱上的MSMQ速度,从而降低吞吐量


顺便说一句,您如何知道在辅助线程上创建的并行线程较少?结论基于减少的吞吐量或您是否与Task Manager进行了检查?我们有自己的监控系统。每个处理程序将有关消息到达的信息保存到监控系统存储器中,然后我们将其显示在图表中。这样我们