關於mysql 提示too many connections問題解決辦法
mysql 提示too many connections是由於當前服務器上的mysql連接過多,一方面清當前已有連接,另一方面是改 max_connections (最大連接量)(就是開源節流思想),我這邊能夠訪問阿里雲的mysql,可以修改max_connections,有效狀態爲當前mysql啓動狀態
就是重啓就沒用了,這跟版本有關,5-7的版本只能分兩步線上設置,配置文件再改。
修改操作(mysql對應的命令行內):
show processlist;//顯示當前連接列表
set GLOBAL max_connections=1000;
//set GLOBAL wait_timeout=120;
//set GLOBAL interactive_timeout=xxx;
(max_connections相當於容器大小,interactive_timeout相當於一個倒計時,時間到了就算是正在運行也會被關閉,所以我這邊沒有設置。包括wait_timeout需要使用時要慎重考慮值設爲多少合適)(個人理解)
(max_connections一般爲500~1000,wait_timeout爲等待超時時間,interactive_timeout爲交互超時時間,修改這個數值,表示mysql在關閉一個連接之前要等待的秒數,至此可以讓mysql自動關閉那些沒用的連接,但要注意的是,正在使用的連接到了時間也會被關閉,因此這個時間值要合適)。(博客描述)
當下一次mysql重啓服務,max_connections會回到默認值,只有在阿里雲的服務器下的控制檯調出配置文件/ect/my.cnf,
#cd /etc/mysql
#ls
#vi my.cnf
之後把
max_connections=1000
wait_timeout=120
interactive_timeout=300
加進去
這樣在阿里雲上改了配置文件之後,mysql重啓就能夠讀取到。
這種方法適用於mysql的版本在8之前。
8之後的版本有新的方法一步到位不需要從文件裏面改
mysql8.0 使用 persist 參數會持久化到配置文件,比較簡單
設置等待超時時間
set persist wait_timeout=120;
設置交互超時時間
set persist interactive_timeout=300;
設置最大鏈接數(一般500-1000合理)
set persist max_connections=1000;
所以在這之前需要先檢查mysql版本:select version();