MySQL伺服器設定max_user_connections防止串連耗盡,以提高可用性

來源:互聯網
上載者:User

問題簡述/現象及原因

一台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使用者的最大串連數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.