簡體   English   中英

SQL Server - 數據庫連接限制

[英]SQL Server - Database Connection Limit

我們遇到了 SQL Server 的問題,其中數據庫連接數達到其限制(默認值為 100)並導致網站在應用程序池回收之前不響應進一步的請求,這會關閉打開的連接。

這是我用來查看每個數據庫打開了多少連接的 SQL:

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame
ORDER BY NumberOfConnections DESC
;

當我看到達到限制的數據庫時,我會回收該數據庫以使站點正常工作。 然而,在我這樣做之前,我會檢查所有進程都在運行。 10/10 次,我看到有 100 個連接打開,它們是“Sleeping”和“Awaiting Command”。 當我檢查最后一條語句運行時,我看到它是我的登錄頁面的代碼。

我的問題是,這些睡眠過程不應該在一定時間后釋放嗎? 它們似乎沒有被釋放,我相信這就是池最終達到限制並且我的應用程序無法建立數據庫連接的原因。

我的問題是,這些睡眠過程不應該在一定時間后釋放嗎?

您可能已經泄漏了連接,因此在它們被 GC 處理並且終結器關閉連接之前,它們將保持打開狀態。 GC 不是基於時間的,因此不能保證它們會在一定時間內被清理干凈。

您需要找到打開 SqlConnection 的代碼路徑,而不是 Close()ed 或 Dispose()ed 並修復該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM