Nous avons mis en cluster MSMQ pour un ensemble de services NServiceBus et tout fonctionne parfaitement jusqu'à ce que ce ne soit pas le cas. Les files d'attente sortantes sur un serveur commencent à se remplir, et bientôt tout le système est bloqué.Les messages MSMQ liés à l'instance MSMQ en cluster sont bloqués dans les files d'attente sortantes
Plus de détails:
Nous avons un MSMQ en cluster entre les serveurs N1 et N2. Les autres ressources en cluster sont uniquement des services qui fonctionnent directement sur les files d'attente en cluster en tant que distributeurs locaux, c'est-à-dire NServiceBus.
Tous les processus de travail se déroulent sur des serveurs distincts, Services3 et Services4.
Pour ceux qui ne connaissent pas NServiceBus, le travail est effectué dans une file d'attente de travail en cluster gérée par le distributeur. Les applications de travail sur Service3 et Services4 envoient des messages «Je suis prêt pour le travail» à une file d'attente de contrôle en cluster gérée par le même distributeur et le distributeur répond en envoyant une unité de travail à la file d'attente du processus de travail.
À un certain point, ce processus peut être complètement bloqué. Voici une image des files d'attente sortantes sur l'instance MSMQ cluster lorsque le système est bloqué:
Si je ne sur le cluster à l'autre nœud, il est comme tout le système obtient un coup de pied dans le pantalon . Voici une image de la même instance en cluster MSMQ peu de temps après un basculement:
Quelqu'un peut-il expliquer ce comportement, et ce que je peux faire pour l'éviter, pour maintenir le système fonctionne bien?
Le noeud secondaire est-il éventuellement bloqué? Comment les travailleurs agissent-ils? Traitent-ils activement les messages? –
Il ne se produit pas assez souvent que je peux le dire autoritairement arrive sur un seul nœud ou les deux. Les travailleurs se comportent - ils traitent activement les messages lorsqu'il y a des messages dans leurs files d'attente d'entrée locales à traiter. –
Bizarre. Combien de fois cela arrive-t-il? Combien de cartes NIC chaque nœud a-t-il? Je me demande si MSMQ est confus quant à la carte à utiliser et, par conséquent, ne remplit parfois pas les ACK. Il devrait y avoir un paramètre de Registre pour le verrouiller. –