連線池的問題

2022-03-07 08:46:40 字數 1190 閱讀 5874

看到關於連線池的問題,覺得很有用,摘錄到自己部落格上

net連線池救生員

防止可淹沒應用程式的池溢位

william vaughn

大多數 ado.net 資料提供程式使用連線池,以提高圍繞 microsoft 斷開連線的 .net 結構構建的應用程式的效能。應用程式首先開啟乙個連線(或從連線池獲得乙個連線控制代碼),接著執行乙個或多個查詢,然後處理行集,最後將連線釋放回連線池。如果沒有連線池,這些應用程式將花費許多額外時間來開啟和關閉連線。

當您使用 ado.net 連線池來管理基於 web 的應用程式和客戶端/伺服器 web 服務應用程式的連線時,您的客戶通常會獲得更快的連線和更好的總體效能。但是,當您的應用程式或 web 站點上突然湧入了同時希望進行連線的大量客戶時,會發生什麼事情呢?您的應用程式會「沉沒」,還是會「游泳」?就像救生員一樣,您需要仔細監視連線池,以維護它的良好效能,並防止連線池發生溢位。我們首先**連線池可能溢位的原因,然後討論如何編寫**或使用 windows 效能監視器來監視連線池。

正如我於 2003 年 5 月發表的 'swimming in the .net connection pool' (instantdoc id 38356) 一文中討論的那樣,當您使用連線池時,您需要知道許多有關可伸縮性和效能的詳細資訊。請記住,您需要監視和管理兩個基本因素:每個池管理的連線數和連線池的數量。在乙個有效的生產系統中,池的數量通常很少(1 到 10),而且,使用中的連線的總數也很少(少於 12 )有效的查詢只用不到一秒鐘的時間就可以完成,並斷開連線。因此,即使有數百個客戶同時訪問您的 web 站點,相對較少的幾個連線常常足以處理整個負載。為了使您的應用程式有效地執行,您必須使連線資源處於自己的控制之下,並要監視池的狀態,這樣,在監視池發生溢位以及您的客戶開始抱怨(或離開您的**)之前您會收到某種警告。

為什麼會發生連線池溢位?

參加電子郵件討論組的人常常抱怨應用程式是如何在測試中是「龍」而在形成為產品時就變成了「蟲」的。有時,他們會報告說,當連線了大約 100 個客戶端時,應用程式會停止或掛起。請記住,乙個池中的預設連線數是 100。如果您嘗試從池中開啟 100 個以上的連線,ado.net 會使應用程式的連線請求排隊等候,直到有空閒的連線。應用程式(及其使用者)將這種情況視為進入 web 頁的延遲或視為應用程式死鎖。讓我們首先討論一

連線池問題

connection耗盡不一定就是由connection leak引起,如果你的執行佇列中線程數設定的比connection pool大,而且你的某些程式占用connection時間過長,致使執行佇列中的執行緒已經把connection pool中的所有的connection都申請出來了,此時如果再...

連線池與使用Tomcat的連線池

what is connection pool?看圖 1 存放connection物件的容器 2 減少連線資料庫的開銷 3 程式請求連線時,在connection pool中取連線 4 連線使用完後,放回connection pool,不釋放 5 connection pool對連線進行管理 計數 ...

mysql連線池的概念 連線池概念

1 連線池是乙個程序 多個連線是在乙個程序裡面儲存 管理的。這個程序儲存所有的連線,當我們開啟連線,如果有未用連線可用,則返回該連線。如果池中的連線都用完了,則建立乙個新的連線儲存到連線池。而但我們關閉連線的時候,連線池裡面並不關閉連線,而是返回連線池中並標記為可重用的狀態,等待重新連線直到等待超時...