mysql连接池爆满,释放程序长连接僵尸进程

程序启动报错提示连接池爆满不可用的情况下,我们从数据库入手查看哪些进程长时间等待

进入mysql命令界面输入:show processlist


下面我们查找linux系统上mysql所在服务器的位置which mysql,使用which命令前提是你的 cat /etc/profile你的系统环境变量文件内配置了检索的目录,如果安装目录没有配置在profile文件内是查询不到安装目录的,一般自行安装会在/data/mysql目录下,具体目录要自行检索


下面我们编写清理mysql长连接的sleep状态的进程  命名为cleanmysql.sh的shell脚本文件

脚本执行的时候需要动态传入3个参数,这些参数可以写死也可以传递,sh cleanmysql.sh 参数1 参数2 参数3 【参数之间用空格隔开】

例如sh cleanmysql.sh 127.0.0.1 3306 root因为我们的shell脚本中的hostip=$1 port=$2 user=$3是需要的服务器地址、端口、用户名

#!/bin/sh

MYSQLDIR=/data/mysql/bin
MYSQLTOOL=$MYSQLDIR/mysql
MYSQLUSER=root
MYSQLPASS=Ig#pThp%x
usage()
{
    echo "Usage: $0 ip port db_user"
    echo "Example: $0 1.1.1.1 3306 db_user"
    exit
}


if [ $# -ne 3 ];then
    usage
fi
hostip=$1
port=$2
user=$3
sleepid="SELECT ID FROM information_schema.PROCESSLIST t WHERE t.COMMAND='Sleep' and user='$3' and time >1000;"
echo $sleepid
 $MYSQLTOOL -h$hostip -u$MYSQLUSER -p$MYSQLPASS -P$port -e "$sleepid" >sleepIDs


while read sID
do
 echo $sID
$MYSQLTOOL -h$hostip -u$MYSQLUSER -p$MYSQLPASS -P$port -e "kill $sID"
done<sleepIDs
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值