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/binMYSQLTOOL=$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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)