2009-11-13 8 views
26

MSMQ: Cosa può causare un errore "Risorse insufficienti per eseguire l'operazione" quando si riceve da una coda?MSMQ: Cosa può causare un errore "Risorse insufficienti per eseguire operazioni" quando si riceve da una coda?

Nel momento in cui la coda conteneva solo 2000 messaggi con ogni messaggio di circa 5 KB.

+0

Probabilmente si perde una risorsa (memoria, maniglie, ecc.). –

+0

Sono d'accordo, maniglie è la mia scommessa. Quale sistema operativo? – SqlACID

+0

Windows Server 2003 –

risposta

22

Dal Blog di John Breakwell ci sono possibilità undici:

  1. Il pool di thread per la lettura a distanza è esaurito (MSMQ 2.0).
  2. Il numero di thread di callback locali viene superato
  3. Il volume dei messaggi ha superato ciò che il sistema in grado di gestire (MSMQ 2.0 solo).
  4. La memoria del kernel di paging-pool è esaurita.
  5. Binari non corrispondenti.
  6. La dimensione del messaggio è troppo grande.
  7. La quota della macchina è stata superata.
  8. problemi di routing quando si apre un transazionale coda esterna (MSMQ 3.0)
  9. La mancanza di spazio su disco.
  10. problemi di stoccaggio su dispositivi mobili
  11. Clustering troppe risorse MSMQ

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

Vorrei verificare la versione della coda e la quantità di connessioni (da e per) la tua coda aperta al tempo di errore. Qualsiasi di questi "potrebbe avere" causato il tuo errore.

+1

Era il numero di connessioni aperte. C'era un bug in cui avrebbe aperto le connessioni in un loop e non le avrebbe mai chiuse. –

+1

Che cos'è esattamente una "connessione" alla coda? Sto lavorando con l'API gestita .NET per l'accodamento dei messaggi e i documenti MSDN non menzionano mai il concetto di "connessioni". –

+0

In .NET, ogni oggetto 'MessageQueue' è considerato una connessione, quindi è necessario" eliminarli ". –

29

Ho avuto lo stesso messaggio di errore e la soluzione era semplice.

C'erano molti messaggi seduti su varie code e i limiti di archiviazione erano stati raggiunti. Sono andato a:

  • Server Manager -> Caratteristiche

  • destra scattata sul Message Queuing

  • Immobili selezionati

  • Nella scheda Generale delle Nazioni Unite-spuntato i limiti di archiviazione

mi è stato comunicato che i servizi che utilizzano MSMQ sarebbero ri-iniziato, e quindi l'errore è andato via.

+3

Buone istruzioni. Anche se fisserei un limite ... lasciandolo diventare il più "grande possibile" si rischia di riempire il disco rigido. Ciò potrebbe a sua volta causare errori ancora più gravi di msmq "Risorse non valide per eseguire operazioni". – goamn

+3

È vero, anche se è molto semplice monitorare lo spazio sul disco rigido e un reparto IT non deve sapere di altri limiti da conoscere. – Philip

+0

accessibile anche tramite 'Gestione computer' ->' Accodamento messaggi ', fare clic con il tasto destro del mouse -> 'Proprietà' – inwenis

12

Ho avuto troppi messaggi non riusciti nella mia coda in uscita. Controllare le code di sistema -> messaggi di lettera morta. Ho eliminato questa coda e ha funzionato di nuovo bene.

+4

Questo ha risolto il problema anche per me, tranne che era la" Transactional dead letter queue " – Scott