不是數據庫管理員(甚至不是數據庫管理員),我收到抱怨說我寫了一段代碼在數據庫中留下了「睡眠連接」。睡眠連接在SQL Server中
我的代碼是Java和使用Apache下議院DBCP連接池。我也使用Spring的JdbcTemplate
來管理連接的狀態,所以不要關閉連接是不可能的(因爲庫對我來說是這樣做的)。
我的主要問題是,從一個DBA的角度來看,可以將這些連接會導致服務中斷或性能不佳?
This question是相關的,目前的設置都留給他們在那裏(在游泳池無限有功/無連接)。
不是數據庫管理員(甚至不是數據庫管理員),我收到抱怨說我寫了一段代碼在數據庫中留下了「睡眠連接」。睡眠連接在SQL Server中
我的代碼是Java和使用Apache下議院DBCP連接池。我也使用Spring的JdbcTemplate
來管理連接的狀態,所以不要關閉連接是不可能的(因爲庫對我來說是這樣做的)。
我的主要問題是,從一個DBA的角度來看,可以將這些連接會導致服務中斷或性能不佳?
This question是相關的,目前的設置都留給他們在那裏(在游泳池無限有功/無連接)。
真的,回答你的問題,這些「沉睡」的連接數量的想法是很好的。這個服務器的主要目的是爲您的應用程序提供服務,還是您的應用程序是衆多應用程序之一也很重要。同樣重要的是您的應用程序是否有多個實例(例如,在多個Web服務器上),還是隻有一個。
以我的經驗,很少有沒有對現代硬件的空閒連接相關的,只要你沒有達到成百的開銷。這就是說,看着你以前的問題,讓游泳池產生無數的連接聽起來不明智 - 我建議設置一個上限,即使你設置了一個上限。
我可以從至少一個痛苦的情況告訴你泄漏連接池,具有到一個SQL服務器一千打開的連接是昂貴的,即使它們是空閒的。我似乎想起當服務器接近2000連接範圍(幾年前在中端硬件上使用SQL 2000)時,服務器開始失去它(未接受新連接,簡單查詢超時等)。
希望這會有所幫助!
Apache DBCP的maxIdle
連接設置爲8,maxActive
設置爲8.這意味着可以在池中存在8個活動連接數和8個空閒連接數。撥打連接時,DBCP重新使用連接。您可以根據您的要求進行設置。您可以參考下面的文檔:
我才知道,問前面的問題:),我很感興趣,當是如果這些「沉睡」的連接,就像他們說的,會影響SQL Server的性能。 – 2011-05-06 09:51:09
@Alex - 通常在現場系統中,根據使用要求分配連接數量。對於實時有250個用戶的應用程序,我們提供了30個最大連接數。如果有更多的應用程序訪問同一個數據庫,最好根據每個人需要的連接數進行分配。很顯然併發活動連接的數量會影響數據庫服務器,也取決於系統的資源(RAM,CPU)。 – 2011-05-06 10:04:34