2009-11-13 5 views
26

MSMQ: Qu'est-ce qui peut provoquer une erreur "Ressources insuffisantes pour effectuer l'opération" lors de la réception d'une file d'attente?MSMQ: qu'est-ce qui peut provoquer une erreur "Ressources insuffisantes pour effectuer l'opération" lors de la réception d'une file d'attente?

Au moment où la file d'attente ne contenait que 2 000 messages, chaque message ayant une taille d'environ 5 Ko.

+0

Vous risquez de perdre une ressource (mémoire, poignées, etc.). –

+0

Je suis d'accord, les poignées est mon pari. Quel système d'exploitation? – SqlACID

+0

Windows Server 2003 –

Répondre

22

du blog de John Breakwell il y a onze possibilités:

  1. La piscine de fil pour la lecture à distance est épuisé (MSMQ 2.0 seulement).
  2. Le nombre de fils de rappel locales est dépassée
  3. Le volume de messages a dépassé ce que le système peut traiter (MSMQ 2.0 uniquement).
  4. La mémoire noyau du pool de pagination est épuisée.
  5. Binaires incompatibles.
  6. La taille du message est trop grande.
  7. Le quota de la machine a été dépassé.
  8. problèmes de routage lors de l'ouverture d'une
  9. file d'attente transactionnel (MSMQ 3.0 uniquement) Manque d'espace disque.
  10. problèmes de stockage sur les appareils mobiles
  11. clustering trop de ressources MSMQ

http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/761035.aspx

Je voudrais vérifier la version de votre file d'attente et le nombre de connexions (depuis et vers) votre file d'attente ouverte au temps d'erreur. N'importe lequel de ces "aurait pu" a provoqué votre erreur.

+1

Il s'agissait du nombre de connexions ouvertes. Il y avait un bug où il ouvrait les connexions en boucle et ne les fermait jamais. –

+1

Qu'est-ce qui est exactement considéré comme une "connexion" à la file d'attente? Je travaille avec l'API .NET pour la mise en file d'attente des messages, et les documents MSDN ne mentionnent jamais le concept de 'connexions'. –

+0

Dans .NET, chaque objet 'MessageQueue' est considéré comme une connexion, vous devez donc les 'Disposer'. –

29

J'ai eu le même message d'erreur et la solution était simple.

Il y avait beaucoup de messages assis sur diverses files d'attente, et les limites de stockage avaient été atteintes. Je suis allé à:

  • Gestionnaire de serveur -> Caractéristiques

  • cliqué sur le bouton droit Message Queuing

  • Biens sélectionnés

  • Dans l'onglet Général fait tic tac non les limites de stockage

On m'a informé que les services utilisant MSMQ seraient re-commencé, puis l'erreur a disparu.

+3

Bonnes instructions. Bien que je fixerais toujours une limite ... le laisser pour devenir aussi "grand comme possible" donne le risque de remplir votre disque dur. Cela pourrait à son tour causer des erreurs encore plus graves que les "Ressources invalides pour effectuer l'opération" de msmq. – goamn

+3

Vrai, bien qu'il soit très facile de surveiller l'espace du disque dur, et un service informatique n'aura pas à connaître d'autres limites à connaître. – Philip

+0

également accessible via 'Computer Managment' ->' Message Queuing', clic droit -> 'Properties' – inwenis

12

J'ai eu trop de messages ayant échoué dans ma file d'attente sortante. Vérifier les files d'attente système -> Messages de lettres mortes. J'ai effacé cette file d'attente et cela a bien fonctionné encore.

+4

Cela a résolu le problème pour moi aussi, sauf que c'était la" file d'attente des lettres mort transactionnelle " – Scott

Questions connexes