Attualmente abbiamo una piccola situazione nelle nostre mani - sembra che qualcuno, da qualche parte, abbia dimenticato di chiudere la connessione nel codice. Il risultato è che il pool di connessioni è esaurito in modo relativamente rapido. Come patch temporanea abbiamo aggiunto Max Pool Size = 500;
alla nostra stringa di connessione sul servizio web e al pool di riciclo quando tutte le connessioni sono state spese, finché non lo scopriamo.Tutte le connessioni nel pool sono in uso
Finora non abbiamo fatto questo:
SELECT SPId
FROM MASTER..SysProcesses
WHERE DBId = DB_ID('MyDb') and last_batch < DATEADD(MINUTE, -15, GETDATE())
per ottenere SPID di che non sono utilizzati per 15 minuti. Stiamo cercando di ottenere la query che è stato eseguito lo scorso utilizzando tale SPID con:
DBCC INPUTBUFFER(61)
ma le query visualizzate sono vari, che significa sia qualcosa sul livello di base per quanto riguarda la manipolazione di collegamento era rotto, o la nostra deduzione è errata. ..
C'è un errore nel nostro modo di pensare qui? Il DBCC/sysprocesses dà risultati che ci aspettiamo o c'è qualche effetto collaterale? (Ad esempio, i collegamenti in piscina influenza?)
(per favore, attenersi a ciò che siamo riusciti a scoprire l'utilizzo di SQL in quanto i ragazzi che hanno fatto il codice sono molte e non tutte presenti in questo momento)
'i ragazzi che hanno fatto il codice sono molti e non tutti presenti in questo momento'. Non penso che fossero tutti lì quando hanno dimenticato di chiudere le loro connessioni SQL. ;) –
hai il codice sorgente giusto? Non dovrebbe essere difficile cercare tutte le connessioni aperte e chiuderle, a condizione che non passino deliberatamente le connessioni intorno ... –
@will @mitch - tu * non * vuoi guardare il codice, fidati di me :) ma, alla fine, questa era l'unica opzione alla fine ... e l'abbiamo risolto mettendo try-finally {close} ovunque ... – veljkoz