解決MySQL數據庫連接太多,多數Sleep


1.查看當前所有連接的詳細資料:    
mysqladmin -uroot -proot processlist
客戶端使用:
show full processlist 
2、只查看當前連接數(Threads就是連接數.):
mysqladmin -uroot -proot status
客戶端使用:
3.查看最大連接數
show variables like "max_connections";
4:查看當前連接數:
 show global status like 'Max_used_connections';
如果進程過多打印下來:
mysql -e 'show full processlist;' > 111


解決辦法:
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'interactive_timeout';

set global wait_timeout=100;
SET GLOBAL interactive_timeout=100;
修改連接的等待時間,超過時間釋放連接。
上面是實時修改重啟數據庫后失效
可在my.cnf中添加
wait_timeout=100
interactive_timeout=100

再次查看可能發現連接任然無法釋放。需要重啟數據庫。
可能Shutdown mysqld失敗。一直.............................................................................................
則重啟服務器吧。【攤手】
mysql數據庫無響應狀態了。只能強制重啟了

還可以修改最大連接數(不建議):
MySQL服務器過去的最大連接數是245,沒有達到服務器連接數上限256,應該沒有出現1040錯誤,比較理想的設置是:
Max_used_connections / max_connections * 100% ≈ 85%
臨時修改
set GLOBAL max_connections=1000; 
永久修改:
配置/etc/my.cnf
[mysqld]新添加一行如下參數:
max_connections=1000
show variables like 'max_connections';  
如果不是我們查看的最大1000; 這是由於mariadb有默認打開文件數限制。可以通過配置
/usr/lib/systemd/system/mariadb.service來調大打開文件數目。 配置/usr/lib/systemd/system/mariadb.service [Service]新添加兩行如下參數: LimitNOFILE=10000 LimitNPROC=10000 重新加載系統服務,並重啟mariadb服務 systemctl --system daemon-reload systemctl restart mariadb.service

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM