前言:
现时咱们对“mysql很多sleep”大体比较珍视,兄弟们都需要了解一些“mysql很多sleep”的相关资讯。那么小编在网络上汇集了一些对于“mysql很多sleep””的相关文章,希望各位老铁们能喜欢,小伙伴们快快来了解一下吧!上一篇文章讲到了通过修改系统参数配置,自动结束MySQL数据库中超时的Sleep的进程。本次将讲述如何通过编写Shell脚本结束Sleep进程。
第一步,连接数据库
第二步,查询sleep进程
第三步,过滤选择对应的进程
第四步,结束选中的进程
最后一步,部署脚本。
按照以上的步骤,对照脚本如下:
#It is used to kill processlist of mysql sleep# shell脚本:Kill掉MySQL中所有sleep的client线程# 0 */1 * * * sh ~/mysql_kill_sleep_process.sh#!/bin/sh n=`mysqladmin processlist -uxxxx -pxxxx -hxx.xx.xx.xx1 |grep -i sleep | grep xx.xx.xx.xx2 | grep connect_user |wc -l` date=`date +%Y%m%d\[%H:%M:%S]` echo $n if [ "$n" -gt 5 ] then for i in `mysqladmin processlist -uxxx -pxxxxx -hxx.xx.xx.xx1 |grep -i sleep | grep xx.xx.xx.xx2 | grep bi_editer |awk '{print $2}'` do mysqladmin -uxxx -pxxx -hxx.xx.xx.xx1 kill $i echo "xxxx $i was killed!" >> ./sleep.log done echo "sleep is too many I killed it " >> ./sleep.log echo "$date : $n" >> ./sleep.log fi
不知道大家看了脚本还会不会继续读下去,相信大家一定能看懂,不过还是简单解释脚本的功能
脚本介绍
脚本中xx.xx.xx.xx1代表MySQL服务器地址,xx.xx.xx.xx2代表客户端地址
grep xx.xx.xx.xx2 筛选客户端
grep connect_user 筛选连接用户
脚本中增加了sleep进程的数量判断,当数量达到一定阈值时,采取结束进程的动作,否则不会,避免频繁的操作后台,对数据库以及服务器造成影响。
调度配置
在程序的第三行
# 0 */1 * * * sh ~/mysql_kill_sleep_process.sh #每个整点(每隔一个小时)执行一次
相信大家也很熟悉吧,对,这就是Linux的定时任务。当我们写完脚本,就需要考虑如何去执行它。我选择了配置定时任务的方式:crontab。使用crontab的方式很简单。在用户home目录下创建一个cron.xxx (xxx最好是用户名), 将以上配置写入(去掉#),然后执行 crontab cron.xxx,定时任务就配置成功了。
至此,shell脚本会每隔一个小时执行一次,再也不用为大堆的sleep进程烦恼了。
下期再见
如果你喜欢的话,请关注
如果你觉得是干货,请收藏
如果你觉得值得分享,请转发
欢迎大家留言
标签: #mysql很多sleep