[英]Spring and MySQL connections (keeps creating new connections instead using sleeping connections)
[英]Sleeping connections in SQL Server
不是數據庫管理員(甚至不是MS數據庫管理員:),我收到的投訴是我寫的一段代碼在數據庫中留下了“睡眠連接”。
我的代碼是Java,並使用Apache Commons DBCP進行連接池。 我還使用Spring的JdbcTemplate
來管理連接的狀態,因此不能關閉連接是不可能的(因為庫正在為我做這個)。
我的主要問題是,從DBA的角度來看,這些連接是否會導致中斷或性能不佳?
這個問題是相關的,目前設置保留原樣(池中的無限活動/空閑連接)。
Apache DBCP的maxIdle
連接設置為8, maxActive
設置為8.這意味着池中可以存在8個活動連接數和8個空閑連接數。 DBCP在進行連接調用時重用連接。 您可以根據您的要求進行設置。 您可以參考以下文件:
真的,要回答你的問題,對這些“睡眠”連接數量的想法會很好。 此服務器的主要用途是為您的應用程序提供服務,還是您的應用程序是眾多應用程序中的一個,這也很重要。 同樣重要的是您的應用程序是否有多個實例(例如,在多個Web服務器上),或者它是否只是一個實例。
根據我的經驗,只要你沒有達到數百個連接,現代硬件上的空閑連接幾乎沒有任何開銷。 也就是說,看看你之前提出的問題,允許游泳池產生無限數量的連接並不明智 - 我建議設置一個上限,即使你設置了數百個。
我可以告訴你至少一個連接池泄漏的痛苦情況,與單個SQL服務器有一千個打開的連接是昂貴的,即使它們是空閑的。 我似乎記得服務器在接近2000連接范圍時開始失去它(無法接受新的連接,簡單的查詢超時等)(幾年前這是中端硬件上的SQL 2000)。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.