標籤:超過 .com like variables 配置 需求 ble sed global
項目中可能會遇到MySQL: ERROR 1040: Too many connections”的異常情況,造成這種情況的一種原因是訪問量過高,MySQL伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力;另一種原因就是MySQL設定檔中max_connections值過小。
首先,首先我們來看下mysql的最大串連數:
show variables like ‘%max_connections%‘;
如果伺服器的並發串連請求量比較大,建議調高此值,以增加並行串連數量,當然這建立在機器能支撐的情況下,因為如果串連數越多,介於MySQL會為每個串連提供串連緩衝區,
就會開銷越多的記憶體,所以要適當調整該值,不能盲目提高設值。
數值過小會經常出現ERROR 1040: Too many connections錯誤,可以過
show global status like ‘Max_used_connections‘;
萬用字元查看目前狀態的串連數量,以定奪該值的大小。
以看到伺服器響應的最大串連數為3,遠遠低於mysql伺服器允許的最大串連數值。
對於mysql伺服器最大串連數值的設定範圍比較理想的是:伺服器響應的最大串連數值占伺服器上限串連數值的比例值在10%以上,如果在10%以下,說明mysql伺服器最大串連上限值設定過高.
Max_used_connections / max_connections * 100% = 3/512 *100% ≈ 0.0058%
我們可以看到佔比遠低於10%(因為這是本地監控測試伺服器,結果值沒有太大的參考意義,大家可以根據實際情況設定串連數的上限值)。
max_used_connections / max_connections * 100% (理想值≈ 85%)
如果max_used_connections跟max_connections相同 那麼就是max_connections設定過低或者超過伺服器負載上限了,低於10%則設定過大。
MySQL的max_connections參數用來設定最大串連(使用者)數。每個串連MySQL的使用者均算作一個串連。
MySQL無論如何都會保留一個用於管理員(SUPER)登入的串連,用於管理員串連資料庫進行維護操作,即使當前串連數已經達到了max_connections。因此MySQL的實際最大可串連數為max_connections+1;
這個參數實際起作用的最大值(實際最大可串連數)為16384,即該參數最大值不能超過16384,即使超過也以16384為準;
增加max_connections參數的值,不會佔用太多系統資源。系統資源(CPU、記憶體)的佔用主要取決於查詢的密度、效率等;
該參數設定過小的最明顯特徵是出現”Too many connections”錯誤;
設定這個最大串連數值
方法1:
set GLOBAL max_connections=1024;show variables like ‘%max_connections%‘;
這種 方式在Mysql重啟後就失效。
方法2:
修改mysql設定檔my.cnf,在[mysqld]段中添加或修改max_connections值:max_connections=512
重啟mysql服務即可。
總體來說,該參數在伺服器資源夠用的情況下應該盡量設定大,以滿足多個用戶端同時串連的需求。否則將會出現類似”Too many connections”的錯誤。
Mysql 串連數,最大並發數設定