mysql sleep連線過多的完美解決辦法
睡眠連線過多,會對mysql伺服器造成什麼影響?
嚴重消耗mysql伺服器資源(主要是cpu, 記憶體),並可能導致mysql崩潰。
造成睡眠連線過多的原因? www.2cto.com
1. 使用了太多持久連線(個人覺得,在高併發系統中,不適合使用持久連線)
2. 程式中,沒有及時關閉mysql連線
3. 資料庫查詢不夠優化,過度耗時。
那麼,如果要從根本上解決sleep連線過多,就得從以上三點反覆檢查,但是見效並不快。
網上有人分享,使用shell指令碼配合cron,定期殺死睡眠時間太久的連線,但是這種方法非常不可取,典型的以暴制暴,很可能導致資料崩潰,而且,還需要編寫相應shell, 設定cron, 實施成本較繁瑣,不推薦使用。
那麼更好的辦法應該是讓mysql自己決定這些睡眠連線的命運,實施會更簡單,有效。
mysql的配置檔案中,有一項:
wait_timeout, 即可設定睡眠連線超時秒數,如果某個連線超時,會被mysql自然終止,多好的辦法!
如設定:
wait_timeout=100 #即設定mysql連線睡眠時間為100秒,任何sleep連線睡眠時間若超過100秒,將會被mysql服務自然終止,要比編寫shell指令碼更簡單。
那麼,對於正在執行中的生產伺服器,在不能停止服務情況下,修改此項怎麼辦?很簡單,以root使用者登入到mysql,執行:
set global wait_timeout=100
即可。在我的生產環境中,使用這個辦法,取得了相當好的效果。
當然,更根本的方法,還是從以上三點排查之:
1. 程式中,不使用持久鏈結,即使用mysql_connect而不是mysql_pconnect。
2. 程式執行完畢,應該顯式呼叫mysql_close
3. 只能逐步分析系統的sql查詢,找到查詢過慢的sql,優化之.
mysql sleep連線過多的完美解決辦法
睡眠連線過多,會對mysql伺服器造成什麼影響?嚴重消耗mysql伺服器資源 主要是cpu,記憶體 並可能導致mysql崩潰。造成睡眠連線過多的原因?1.使用了太多持久連線 個人覺得,在高併發系統中,不適合使用持久連線 2.程式中,沒有及時關閉mysql連線 3.資料庫查詢不夠優化,過度耗時。那麼,...
mysql sleep連線過多的完美解決辦法
睡眠連線過多,會對mysql伺服器造成什麼影響?嚴重消耗mysql伺服器資源 主要是cpu,記憶體 並可能導致mysql崩潰。造成睡眠連線過多的原因?1.使用了太多持久連線 個人覺得,在高併發系統中,不適合使用持久連線 2.程式中,沒有及時關閉mysql連線 3.資料庫查詢不夠優化,過度耗時。那麼,...
mysql sleep狀態連線過多解決辦法
最大連線數 網路問題 mysql伺服器資源問題 show variables like timeout interactive timeout和wait timeout 值表示最大sleep 時長,預設為8個小時。永久生效 把這兩個屬性配置到mysql配置檔案my.cnf中即可 vim etc my...