Sql-Server

與 SQL 2005 的連接過多

  • December 6, 2011

我有一種情況,即應用程序隨著時間的推移從幾個應用程序伺服器打開累積 6000 + 到 32 位 SQL2005 SP2 後端的連接,最終導致內部記憶體壓力(dll 從日誌中的 mem2leave 區域消息解除安裝,同時崩潰應用程序)。我假設應用程序有問題(沒有正確關閉連接)。我已經把它扔給了應用程序的人,但他暗示問題可能出在 SQL 伺服器上,因為它沒有發生在類似的 UAT 環境中。關於我可以在 SQL 端做什麼的任何建議?我考慮過增加 mem2leave 區域,但擔心這只會延遲/掩蓋真正的問題。

當垃圾收集器在應用伺服器上執行時,.NET 應用應自行清理。這應該每隔幾分鐘自動執行一次。

您能否查詢 SQL Server 並查看這些連接在 SQL Server 上是否仍處於打開狀態?

如果你在應用伺服器上執行 netstat,你能看到所有的套接字連接都打開了嗎?(在 SQL Server 上使用的每個 spid 在應用伺服器上都有一個套接字連接。)

如果您確實看到應用伺服器上正在使用的所有埠,那麼應用伺服器肯定不會關閉連接,因為 SQL 不會關閉連接,除非請求關閉。.NET 程式碼可能期望這會自動發生,但事實並非如此。您可能在測試環境中沒有問題,因為使用率要低得多,並且您可能更頻繁地發佈到測試環境,這會導致在重新啟動 IIS 時關閉所有埠。

這對我來說絕對是一個應用程式碼問題。

引用自:https://serverfault.com/questions/57434