Сообщения MSMQ, привязанные к кластеризованному экземпляру MSMQ, застревают в исходящих очередях

Мы сгруппировали MSMQ для набора служб NServiceBus, и все работает отлично, пока не перестает. Исходящие очереди на одном сервере начинают заполняться, и довольно скоро вся система зависает.

Подробнее:

У нас есть кластерный MSMQ между серверами N1 и N2. Другие кластерные ресурсы - это только службы, которые работают непосредственно с кластерными очередями в качестве локальных, то есть распределители NServiceBus.

Все рабочие процессы находятся на отдельных серверах, Services3 и Services4.

Для тех, кто не знаком с NServiceBus, работа переходит в кластерная рабочая очередь, управляемая дистрибьютором. Рабочие приложения на Service3 и Services4 отправляют сообщения «Я готов к работе» в кластеризованную очередь управления, управляемую одним и тем же распространителем, и распространитель отвечает, отправляя единицу работы во входную очередь рабочего процесса.

В какой-то момент этот процесс может полностью зависнуть. Вот изображение исходящих очередей в кластеризованном экземпляре MSMQ, когда система зависла:

Clustered MSMQ Outgoing Queues in Hung State

Если я переключу кластер на другой узел, это будет похоже на то, что вся система получит удар в штаны. Вот изображение того же кластерного экземпляра MSMQ вскоре после аварийного переключения:

Clustered MSMQ Outgoing Queues After Failover

Может ли кто-нибудь объяснить такое поведение и что я могу сделать, чтобы его избежать, чтобы система работала без сбоев?

7
задан Amro 2 July 2012 в 11:41
поделиться