Domanda

Ho un'applicazione Web ASP.NET che è in grado di restituire in modo occasionale quanto segue, irritante, errore:

.

Timeout è scaduto.Il periodo di timeout è trascorso prima di ottenere un Collegamento dalla piscina.Questo potrebbe essere avvenuto perché tutto raggruppato Le connessioni erano in uso e la dimensione massima del pool è stata raggiunta.

Il mio gestore sospetta che questo è a causa di un SqlConnection non inclogliato all'interno dell'applicazione.Pertanto sto controllando manualmente ogni singolo file di codice nell'applicazione per vedere se le connessioni sono state lasciate aperte.

C'è una soluzione più veloce per trovare la radice di questo errore?

È stato utile?

Soluzione

Mazzo di diverse opzioni:

    .
  • Utilizzare Resharper e la sua "ricerca con pattern" (chiamato anche "ricerca strutturale"): http://blogs.jetbrains.com/dotnet/2010/04/introducing-resharper-50-strtural-Search-and-replace/

  • Scrivi una sintassi in miniatura Tree Walker per FxCop o Roslyn per eseguire la stessa ricerca (fondamentalmente, un nuovo sqlconnection non disposto)

  • Scrivi una classe wrapper per sqlconnection (più comune di quanto tu possa pensare) e tracciare i collegamenti aperti / chiusi in là.

  • Allega Windbg a un'applicazione "live" o di errore ideale e percorri gli oggetti heap a dove sono radicati da.

  • Afferra un adeguato profiler (Scitech è un pulito) che ti fornirà pile per la creazione dell'oggetto.

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