最近的項目用了動態切換數據源起初感覺還好,后來發現每次切換數據庫都會創建一個新的連接,這樣就導致大量的sleep線程。而mysql的默認sleep時間是28800秒。。。。默認最大連接數為151,這就導致經常會出現mysql too many connection 的異常,需要重新啟動項目太麻煩於是就搜了些解辦法
1;show variables like "max_connections"; 查看最大連接數
修改最大連接數: set GLOBAL max_connections=1000;
2:show global variables like 'wait_timeout'; 這個就是最大睡眠時間。
修改最大睡眠時間: set global wait_timeout=300; 睡眠300秒后自動殺死線程。
3:show global variables like 'interactive_timeout'; 查看mysql在關閉一個線程前要等待的秒數。
修改等待時間: set global interactive_timeout=500; 注意第二部和第三不要一起設置不然不起作用。
此方法比較笨拙偷懶數據庫一旦重啟就會初始回原來的默認數值所以每次重啟都要重新設置。當然也可以直接就該mysql的配置文件
報錯時mysql大多是登錄不上的所以先執行重啟命令
找到mysql配置文件添加配置
wait_timeout = 300
interactive_timeout = 500
然后重啟。