2011-12-31 72 views
14

我正在嘗試爲共享主機上所需的MySQL和資源設置理想的性能設置。max_connections究竟意味着什麼?

我的問題是,max_connections究竟意味着什麼?

是否是向服務器發出的唯一併發請求數? 因此,如果有兩個用戶,1個打開1個選項卡,另一個打開4個選項卡...並且同時按下所有選項卡以重新加載,則會有5個與MySQL DB連接的連接?因此,如果我們碰到這種情況:10人有2個選項卡,31人有一個選項卡同時刷新...我們的max_connections爲50,每個人都會被鎖定嗎?

我想問的原因是因爲我想拍攝低max_connections是保守的內存資源,因爲我一直看到的網站進入CPU調節模式

謝謝您的幫助

回答

13

是的,有是爲每個頁面打開的單獨連接。但是,假設您沒有進行任何數據庫密集型操作,連接將會短暫並在頁面送達客戶端後自動關閉。

如果超過了最大連接數,則任何後續連接嘗試都將失敗。

+2

是否有設置'max_connections'值的限制嗎?如果我將其設置爲200,000甚至更多,會發生什麼情況? – antf 2013-07-09 16:03:47

+1

每個連接都使用OS和服務器進程中的內存。最終你會達到你的盒子可以處理的最大連接數量的限制。這是相當古老的,但[C10K問題](http://www.kegel.com/c10k.html)給出了一些有關大量連接到單個服務器的問題的想法。 – 2014-03-28 19:49:04

15

允許的連接數由max_connections系統變量控制。當MySQL與Apache Web服務器一起使用時,默認值爲151以提高性能。 (以前,默認值是100.)如果你需要支持更多的連接,你應該爲這個變量設置一個更大的值。

mysqld實際上允許max_connections + 1個客戶端連接。額外的連接被保留供具有SUPER特權的帳戶使用。通過向管理員授予SUPER權限而不授予普通用戶(他們不需要它),管理員可以連接到服務器並使用SHOW PROCESSLIST來診斷問題,即使連接了最大數量的非特權客戶端也是如此。請參見第12.7.5.30節「SHOW PROCESSLIST語法」。

MySQL可支持的最大連接數取決於給定平臺上線程庫的質量,可用RAM的數量,每個連接使用多少RAM,每個連接的工作負載以及所需的響應時間。如果你有很多千兆字節的可用RAM並且每個的工作量很低或者響應時間目標要求不高,那麼Linux或者Solaris應該能夠支持500到1000個同時連接並且多達10,000個連接。由於該平臺上使用的Posix兼容性層,Windows限於(打開表格×2 +打開連接)< 2048。

增加打開文件限制可能是必要的。另請參見第2.5節「在Linux上安裝MySQL」,瞭解如何提高操作系統對MySQL可以使用的句柄的限制。

來源:MySQL 5.6 Reference Manual:: C.5.2.7 Too many connections

相關問題