1. 程式人生 > >mysql sleep連線過多的完美解決辦法

mysql sleep連線過多的完美解決辦法

睡眠連線過多,會對mysql伺服器造成什麼影響?

嚴重消耗mysql伺服器資源(主要是cpu, 記憶體),並可能導致mysql崩潰。

造成睡眠連線過多的原因?

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

# vi /etc/my.cnf  
[mysqld] wait_timeout=10 # /etc/init.d/mysql restart

不過這個方法太生硬了,線上服務重啟無論如何都應該儘可能避免,看看如何在MySQL命令列裡通過SET來設定:

mysql> set global wait_timeout=10;  
mysql> show global variables like '%timeout';  
+----------------------------+-------+  
| Variable_name | Value |  
+----------------------------+-------+  
| wait_timeout | 10 | +----------------------------+-------+

即可。

在我的生產環境中,使用這個辦法,取得了相當好的效果。

當然,更根本的方法,還是從以上三點排查之:
1. 程式中,不使用持久連結,即使用mysql_connect而不是pconnect。
2. 程式執行完畢,應該顯式呼叫mysql_close
3. 只能逐步分析系統的SQL查詢,找到查詢過慢的SQL,優化之

相關推薦

mysql sleep連線過多完美解決辦法

睡眠連線過多,會對mysql伺服器造成什麼影響? 嚴重消耗mysql伺服器資源(主要是cpu, 記憶體),並可能導致mysql崩潰。 造成睡眠連線過多的原因? 1. 使用了太多持久連線(個人覺得,在高併發系統中,不適合使用持久連線) 2. 程式中,沒有及

docker中的mysql資料庫連線不上解決辦法

1.在docker內部連線不上mysql資料庫 即在本地模式下不能連線 這時候應該是docker容器重啟過,mysql資料庫沒有啟動的原因,可以使用 service mysql restart 來啟動mysql資料庫 2.在宿主機上不能遠端連線到docker容器中的mysql資料

mysql sleep連線過多 too many connections

1、當出現這個問題的時候,首先得殺掉sleep的連線,(不推薦修改配置檔案的方式解決:太生硬,還得重啟服務),不然還操作不了 如果真的要配置檔案也行 # vi /etc/my.cnf  [mysqld] wait_timeout=10 0 # /etc/init.d/mysql rest

mysql遠端連線很慢解決辦法

     伺服器重新啟動了,不知道什麼原因訪問速度特別慢,因為是開啟資料庫操作多的頁面特別明顯,由於是區域網伺服器連線,覺得資料庫問題會比較多。    查詢資料得到結果,預設安裝的MYSQL開啟了DNS的反向解析。域名解析也可以導致網路程式慢,MySQL在處理新的執行緒連線

SQLyog遠端連線mysql時出現1130的解決辦法

SQLyog遠端連線mysql時出現1130的解決辦法 在遠端主機上執行:msyql -u roo -p :(password) 進入mysql: use mysql 一般會出現:You must reset your password using ALTER USER statement

zabbix裡面mariaDB(mysql)不允許遠端連線資料庫的解決辦法

開啟檔案 vi /etc/mysql/mariadb.conf.d/50-server.cnf 修改bind-address           = 127.0.0.1 前面加個#號儲存退出   然後mysql -u

whatsapp 無法連線 無網路 完美解決辦法 時間不對 調整時間 上不了 解決方案

我從國外剛回來,想需要和國外的朋友聯絡,國外都是用whatsapp聯絡的,國內用不了就很不方便了 型別這些問題,不管是蘋果還是安卓手機都有出現過的 然後國內朋友就給我推薦了這個服務,使用後我的蘋果手機確實可以解決了,比較方便,並且他們安卓和電腦也是可以支援的,very good! 需要和國外朋友聯絡

mysql 1205 資料庫程序卡住解決辦法(連線超時,只能查詢,增加,不能修改,刪除)

mysql 1205錯誤,資料庫程序卡住,連線超時,只能查詢,增加,不能修改,刪除 我的是多個事物同時進行,最後update的時候,前面的事物未提交或回滾造成的,其實最重要的是檢查程式碼,不然資料庫殺死程序後還是會卡住 下面是如何檢視和殺死卡住的程序 1.檢視資料庫是否有程序卡住

安裝MySQL資料庫無法啟動服務的完美解決辦法

錯誤詳細描述——安裝好新的MYSLQ資料庫後執行MySQL Server Instance Config Wizard,在最後一步出現無法啟動服務錯誤,出現這樣的提示“cannot create windows service for mysql.error:0” 或者MYS

mysql安裝遠端連線失敗404 解決辦法

今天重灌了win8之後裝mysql 突然報了個遠端連線失敗404的錯誤,解除安裝重灌換其他安裝版本trying仍然無效。 百度了下之後網上有限的幾個回答都是關於 什麼32 64位之類的問題。 試了之後發現問題仍沒有得到解決 一番波折之後偶然想到 是不是win8使用者許可權的

遠端連線不上mysql據庫問題的解決辦法

遠端連線不上MySQL資料庫的解決辦法連線不上大致有一下幾種可能:1. 被遠端主機防火牆攔截        這種情況的話,如果你著急測試連線,可以暫時把遠端主機防火牆關閉。linux系統:輸入 service iptable stop 即可。如果是cent os 7 又有點不

遠端連線MySQL報錯ERROR 2003解決辦法

點選開啟連結 在mysql遠端連線時出現ERROR 2003錯誤的很多種,下面我來給大家介紹兩種解決此問題的方法,有需要的同學可參考。 問題程式碼程式碼 ERROR 2003 (HY000): Can't connect to MySQL server on '1

Dapper EF 等orm Mysql不支持事務解決辦法

inno 切換 命令行 type lac 管理員 access 是什麽 更新 MySQL表類型MyISAM和InnoDB區別 MyISAM:這個是默認類型,它是基於傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序

Java與mysql數據庫編程中遇見“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解決辦法

statement sql語句 sql數據庫 mark .sql .cn ava 解決 error 轉載:http://www.cnblogs.com/akiradunn/p/5771513.html 這個Bug是因為在取出ResultSet對象,對其進行操作時,沒有

linux mysql下忘記root密碼解決辦法

uic linux m star word moni bsp color man ble 1 修改MySQL的登錄設置 # vi /etc/my.cnf 在[mysqld]的中加上一句:skip-grant-tables 2 重新啟動mysqld # /e

win10 當前操作環境不支持支付寶控件 完美解決辦法

配置 div 接下來 下載 .cn 用戶 重要 分享 alipay 第一步,修改系統配置 在運行中輸入“gpedit.msc”打開本地組策略編輯器: 打運行窗口的方法是:按win鍵+R (按下win鍵再按R鍵之後 同時松開) w

mysql 服務不見了的解決辦法

pan net mysq 文件夾 cor clas con 提示 pla 當MySQL服務突然消失的時候,可以在命令提示符下輸入mysqld -install來安裝服務,若出現server install denied,則進入system32文件夾裏,用管理員身份來運行cm

鍵盤沒有Home鍵和End鍵的完美解決辦法

zha image 鉤子 正常 ctr 自己的 ctrl+h end alt 最近新入手一個筆記本,發現鍵盤沒有Home/End,這兩個鍵雖然不是必用,但也是用順手了,特別是選擇一行,到行首,行尾的時候甚是方便 作為一枚程序員,怎麽能夠妥協? 於是開始研究 方案一

linux和windows下TIME_WAIT過多解決辦法

iss abs apach cti ack tps als improve increase http://www.51testing.com/html/48/202848-249774.html linux和windows下TIME_WAIT過多的解決辦法 http:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解決辦法

mark logs 都是 try cal iat resp 路徑 str 更換mysql數據目錄後出現ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql