2016-08-15 99 views
0

我正在使用MySqlConnector for .Net。池默認打開。現在,正如其他有關人員在網絡上所說的那樣,這意味着我得到了一些睡眠連接。我的問題是這樣的:連接池如何工作?

假設我的服務器可以處理300個連接(大概是AWS RDS上的4GB RAM RDS MySql服務器允許的),假設我有300個睡眠連接。當連接301應用程序請求,將:

一)池使用其現有的沉睡300個連接
B)拋出一個最大連接錯誤之一,並拒絕連接

據我瞭解, A應該是答案,因爲池會發出無效(睡眠)連接。 B應該是發生了什麼,如果你有300個併發的ACTIVE連接(例如運行查詢),對嗎?

我只想到這個底部,因爲max_connections = 300讓我感到驚訝,因爲它似乎很低。

感謝,鮑勃

回答

1

只要有連接池中自由連接,並在MySQL服務器中有可用的連接,以及(你可以有你的應用程序的連接池外的連接),您的應用程序不應該得到任何太多的連接錯誤。

300個併發連接是否足夠滿足您的需求可以通過壓力測試來確定,在壓力測試中,您可以模擬高峯期預期的當前用戶數。通過優化數據庫連接代碼(在需要之前打開連接,關閉它不再需要它)300個併發數據庫連接可以輕鬆地支持更多的併發用戶。

+0

睡眠連接是一個免費的連接,所以我想問。 –

+0

我的意思是,我正在尋求問。 –

+0

不受您應用程序的觀點影響。不能從沒有使用連接池的任何其他應用程序的角度來解放。 – Shadow