Domanda

Sto costruendo un sito che funziona bene per alcune ore, ma poi le chiamate * .asmx e * .ashx iniziano a scadere.

L'eccezione è: " Timeout scaduto. Il periodo di timeout è trascorso prima di ottenere una connessione dal pool. Potrebbe essersi verificato perché tutte le connessioni del pool erano in uso e era stata raggiunta la dimensione massima del pool. & Quot;

Sto usando SubSonic come ORM.

Sospetto che il problema si basi su un'attività pianificata che viene eseguita ogni pochi minuti e colpisce il database. Quando guardo "Attività corrente" di SQL Server 2000, vedo che ci sono:

  • 100 processi con lo stato "inattivo"
  • 100 blocchi

I 100 processi provengono dall'applicazione ".Net SqlClient Data Provider" e il comando è " AWAITING COMMAND " ;.

Quindi immagino sia questo il problema. . ma come posso risolverlo? Suona come una condizione di deadlock nel db? Non appena io

  

c: \ > iisrestart

, va tutto bene (per un po ').

Grazie - Non ho mai incontrato qualcosa del genere e non sono sicuro del modo migliore di procedere.

Michael

È stato utile?

Soluzione

Potrebbe essere un duplicato di questo problema. Subsonic?

Se stai caricando oggetti con Load () anziché LoadAndCloseReader (), ogni connessione rimarrà aperta e alla fine esaurirai il pool di connessioni.

Altri suggerimenti

Quando si chiama Load () su una raccolta, il Reader rimane aperto - assicurarsi di chiamare LoadAndCloseReader () se si desidera chiudere il lettore - o utilizzare un blocco using.

Aiuta anche ad avere del codice sorgente.

Non so nulla di Subsonic, ma forse stai perdendo "contesti" nel database? Verificherei che qualsiasi risorsa di database verrà eliminata dopo aver finito con essa ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top