簡體   English   中英

在SQL Server中休眠連接

[英]Sleeping connections in SQL Server

不是數據庫管理員(甚至不是MS數據庫管理員:),我收到的投訴是我寫的一段代碼在數據庫中留下了“睡眠連接”。

我的代碼是Java,並使用Apache Commons DBCP進行連接池。 我還使用Spring的JdbcTemplate來管理連接的狀態,因此不能關閉連接是不可能的(因為庫正在為我做這個)。

我的主要問題是,從DBA的角度來看,這些連接是否會導致中斷或性能不佳?

這個問題是相關的,目前設置保留原樣(池中的無限活動/空閑連接)。

Apache DBCP的maxIdle連接設置為8, maxActive設置為8.這意味着池中可以存在8個活動連接數和8個空閑連接數。 DBCP在進行連接調用時重用連接。 您可以根據您的要求進行設置。 您可以參考以下文件:

DBCP配置 - Apache

真的,要回答你的問題,對這些“睡眠”連接數量的想法會很好。 此服務器的主要用途是為您的應用程序提供服務,還是您的應用程序是眾多應用程序中的一個,這也很重要。 同樣重要的是您的應用程序是否有多個實例(例如,在多個Web服務器上),或者它是否只是一個實例。

根據我的經驗,只要你沒有達到數百個連接,現代硬件上的空閑連接幾乎沒有任何開銷。 也就是說,看看你之前提出的問題,允許游泳池產生無限數量的連接並不明智 - 我建議設置一個上限,即使你設置了數百個。

我可以告訴你至少一個連接池泄漏的痛苦情況,與單個SQL服務器有一千個打開的連接是昂貴的,即使它們是空閑的。 我似乎記得服務器在接近2000連接范圍時開始失去它(無法接受新的連接,簡單的查詢超時等)(幾年前這是中端硬件上的SQL 2000)。

希望這可以幫助!

暫無
暫無

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

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