Mysql 殺死sleep進程


查詢數據庫當前設置的最大連接數:查看mysql數據庫連接數、並發數相關信息 

show global variables like '%max_connections%';

查看mysql連接數:mysql processlist詳細說明 

show processlist;

查看sleep退出時間限制:

show variables like “%timeout%”;

+-----------------------------+----------+
| Variable_name              | Value    |
+-----------------------------+----------+
| connect_timeout            | 10      | 
| delayed_insert_timeout      | 300      | 
| innodb_flush_log_at_timeout | 1        | 
| innodb_lock_wait_timeout    | 50      | 
| innodb_rollback_on_timeout  | OFF      | 
| interactive_timeout        | 28800    | 
| lock_wait_timeout          | 31536000 | 
| net_read_timeout            | 30      | 
| net_write_timeout          | 60      | 
| slave_net_timeout          | 3600    | 
| wait_timeout                | 28800    | 
+-----------------------------+----------+
11 rows in set (0.00 sec)

臨時生效命令(注意全局 變量和session變量的區別,下面是全局變量的修改):

set global interactive_timeout=60; flush PRIVILEGES;
set global wait_timeout=60; flush PRIVILEGES;
show global variables like '%timeout%';

永久生效命令:

編輯 /etc/my.cnf,在mysqld 下 新增 timeout參數,設置為120秒,如下:

【mysqld】
wait_timeout=120
interactive_timeout=120

注意:要同時設置interactive_timeout和wait_timeout才會生效。

編寫腳本殺死sleep進程:

#!/bin/sh

user=root
passwd=mysql密碼
host=localhost

while : 
do
  n=`mysqladmin processlist -u$user -p$passwd -h$host | grep -i sleep | grep '10.10.11' | wc -l`
  date=`date +%Y%m%d[%H:%M:%S]`
  echo $n >> /tmp/sleep.log

  if [ "$n" -gt 20 ]
  then
  for i in `mysqladmin processlist -uroot -p5432b400aa9c9fb0c92b543dce97c244 -hlocalhost | grep -i sleep | grep '10.10.11'  | awk '{print $2}'`
  do
    mysqladmin -u$user -p$passwd -h$host kill $i
  done
  echo "sleep is too many I killed it " >> /tmp/sleep.log
  echo "$date : $n" >> /tmp/sleep.log
  fi
  sleep 1
done

 


免責聲明!

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



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