程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL sleep連接過多的完美解決辦法

MySQL sleep連接過多的完美解決辦法

編輯:MySQL綜合教程


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,優化之.  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved