萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL服務器設置max_user_connections防止連接耗盡,以提高可用性

MySQL服務器設置max_user_connections防止連接耗盡,以提高可用性

max_user_connections在mysql中可以設置防止資源被用玩了,所以我們只要在MySQL服務器設置max_user_connections就可以防止連接耗盡,以提高可用性。

問題簡述/現象及原因

一台MySQL服務器上,有多個數據庫,由不同用戶使用,相互之間沒有或很少關聯性。典型的實例是虛擬主機,或者有N多個小網站的某些低頻企業應用。

這種環境下,難免有部分應用的質量不高:

出現效率極低的慢查詢 -> 後續請求大量被locked排隊 -> MySQL服務實時連接數達到最大連接數限制  ->  無法建立新連接

so, 所有相關應用全部掛掉

應對方案

為防止上述情況發生,要為MySQL配置max_user_connections參數。該參數作用是設置單個用戶最大連接數限制。具體設置多少,要根據實際情況再裁定。

需要引起注意的是,這個參數是針對所有用戶的限制,所以要考察正常情況下連接數最多的用戶。可以使用下面語句實時查詢各用戶連接數。

select `USER`,COUNT(`USER`) AS CNT from information_schema.PROCESSLIST GROUP BY `USER` ORDER BY CNT DESC;
一個參考數值,將 max_user_connections 設置為正常情況下單用戶最大連接數的3-5倍。

max_user_connections參數可以在MySQL運行時動態設置 set global …. 當然,也要同步寫到my.ini配置參數裡。

方案評估

max_user_connections 是個一刀切的配置參數,好像MySQL不能對每個用戶設置連接數,並發查詢數,io,cpu占用或其它什麼什麼的細粒度參數。或許並非一定有效。

與max_connections參數對比

max_connections 是指整個mysql服務器的最大連接數;

max_user_connections 是指每個MySQL用戶的最大連接數

copyright © 萬盛學電腦網 all rights reserved