在 SQL Server 發現大量在 Sleeping 的連線

昨日客戶的 DBA 發現 SQL Server 上有近 300 個連線, 其狀態皆為 Sleeping , 為何會這樣呢?

原因: 主要是有一個系統一啟動時, 便開了 300 個 connection .

做了一個測試來重現這個問題

寫了一個程式, 用相同的語法做 10 次查詢, 沒有關閉 SqlConnection. 從資料庫查看所有的 sysprocesses, 會發現有 10 連線在 sleeping

image

 

相同的程式, 多加 SqlConnection.Close 後, 再觀察, 會發現它是用相同的一個連線來做查詢

image

 

若使用 SQL Profiler 觀察, 會發現有加 Close 時, 兩個查詢間會有一個 sp_Reset Connection

image

Enjoy.