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