入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

MySQL Sleep进程处理(二)

创建时间:2017-12-22 投稿人: 17307868949 浏览次数:275

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进程处理(二)

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了