我们为一组NServiceBus服务集群化了MSMQ,一切都很好,直到出现问题。一个服务器上的输出队列开始填满,很快整个系统就会挂起。
更多细节:
我们在N1和N2之间建立了一个集群MSMQ。其他集群资源只是直接在集群队列上作为本地服务运行的服务,即NServiceBus分发器。
所有工作进程都驻留在单独的服务器Services3和Services4上。
对于那些不熟悉NServiceBus的人,工作进入由分发器管理的集群工作队列。Service3和Services4上的工作应用程序向同一分发器管理的集群控制队列发送“我已准备好工作”消息,分发器通过将工作单元发送到工作进程的输入队列来响应。
在某些时候,这个过程可能完全停顿。当系统挂起时,这是集群MSMQ实例的输出队列的图片:
如果我将集群故障转移到另一个节点,就像整个系统被踢了一下。以下是故障转移后不久相同集群MSMQ实例的图片:
有人能解释这种行为以及我可以采取什么措施来避免它,保持系统平稳运行吗?
更多细节:
我们在N1和N2之间建立了一个集群MSMQ。其他集群资源只是直接在集群队列上作为本地服务运行的服务,即NServiceBus分发器。
所有工作进程都驻留在单独的服务器Services3和Services4上。
对于那些不熟悉NServiceBus的人,工作进入由分发器管理的集群工作队列。Service3和Services4上的工作应用程序向同一分发器管理的集群控制队列发送“我已准备好工作”消息,分发器通过将工作单元发送到工作进程的输入队列来响应。
在某些时候,这个过程可能完全停顿。当系统挂起时,这是集群MSMQ实例的输出队列的图片:
如果我将集群故障转移到另一个节点,就像整个系统被踢了一下。以下是故障转移后不久相同集群MSMQ实例的图片:
有人能解释这种行为以及我可以采取什么措施来避免它,保持系统平稳运行吗?