Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Connection leak e riempimento del pool di connessioni

In un sito che stavamo sviluppando improvvisamente in produzione inizia ad apparire questo errore

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool

Questo errore viene generato quando ci si dimentica di chiudere le sessioni o di effettuare il dispose su un oggetto session o su uno degli oggetti ADO.NET che supporta l'interfaccia IDisposable. Questo problema si chiama connection leak perchè la connessione non viene mai tornata al pool di connessioni che piano piano si esaurisce.

Come individuarlo
Il modo più rapido è utilizzare il perfmon.exe che ha al suo interno appositi contatori dedicati al monitoraggio, li trovate sotto le categorie .NET data provider for SqlServer o .NET CLR DATA. In questo modo potete navigare nel vostro sito e vedere in quale pagina si genera il problema. Si può infatti semplicemente cercare per pagine o operazioni che aumentano il numero di connessioni nel pool, ma il contatore più utile è senza dubbio il NumberOfReclaimedConnections, che indica quante volte una connessione è stata liberata forzatamente dal garbage collector. Un valore diverso da zero per questo contatore rivela sicuramente che ci sono dei leak nel codice. Per conoscere comunque tutti i contratori disponibili, consultare questo riferimento.

Per evitare questo problema è sempre bene fare i test di carico dei propri siti, questo perché il pool tiene 100 connessioni e spesso in fase di sviluppo questi errori potrebbero non essere notati visto che solitamente si esegue una navigazione monoutente. Un test di carico che simula già 30 accessi contemporanei non tarderà a far emergere eventuali leak.

Alk.

powered by IMHO 1.3

Print | posted on giovedì 16 novembre 2006 17:50 | Filed Under [ .NET ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET