shell脚本检测监控mysql的CPU占用率
网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法 就是重启mysql服务。由于这种事具有不可预见性,我们不知道什么时候mysql的占用率达到300%,还是写个程序定期判断比较靠谱。
学了shell编程,写了下面的脚本:
#!/bin/bash
cpu=`ps aux | grep 'mysqld$' | cut -d " " -f6 | cut -d. -f1`
if [ $cpu -gt 300 ]
then
service mysql restart && date >> /tmp/mysql.log
fi
稍微解释一下。首先执行"ps aux"命令获取所有系统进程的状态信息,包括CPU,内存等,如下图:

然后通过管道将信息传送给grep,$就是正则表达式结尾的意思,从所有的进程中找到以“mysqld”结尾的进程,其实就是mysql啦,这里返回的是mysql进程的信息,一行,如下图:

接下来的一个cut是截断字符串,我们要统计的是CPU的占用率,当然要截取mysql的CPU数值,cut命令默认是用tab分割的,但是ps aux显示的字符串中的空白是空格而不是tab,我们就要用空格来分割,有的字符串之间是多个空格,这里的 -f8 参数就是截取第8个字符串(有的系统可能是第6个),这个字符串就是mysql的CPU占用率啦!
也许你会有疑问,既然已经得到mysql的CPU占用率了,为什么后面还有一个cut?问的好!我当初也没想到这个问题。因为我们要比较CPU的占用率 嘛,这里我们取得的字符串是一个浮点数(带小数点的),但是shell编程里面是不支持浮点数比较大小的。怎么办?那就比较整数呗,以“.”分割这个浮点 数,第一个就是整数部分,这样我们就取得了mysql占用率的整数部分。
后面就是一个判断,如果大于300的话就就重启mysql服务。后面还有一个命令,这个命令是一个简单的“日志”,目的就是当重启一次服务就记录一下重启mysql的时间,便于以后分析网站的压力情况。
接下来就是定期执行这个程序了,根据情况可以5分钟或者10分钟执行一次,只要编辑 /etc/crontab文件,加入如下语句:
*/5 * * * * root /home/ma6174/mysql_restart.shshell脚本检测监控mysql的CPU占用率的更多相关文章
- Shell编程检测监控mysql的CPU占用率
shell编程很强大! 网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不 ...
- CentOS下编写shell脚本来监控MySQL主从复制的教程
这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...
- 如何处理MySQL经常出现CPU占用率达到99%
如何处理MySQL经常出现CPU占用率达到99% 情况说明: 最近在自己购买的linux服务器上捣鼓了一个小项目,按理说不存在CPU占用率会达到100%的情况,但事实就是经常出现. 然后,我第一反应是 ...
- 使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的能够正常运转. 同时,内核也很公正:它将资源公平地分配给各个进程. 但是,如果你需要给一个重要进程提高优先级时, ...
- Shell脚本中执行mysql的几种方式(转)
Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ...
- shell脚本循环执行mysql语句
参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...
- Centos 6.4上面用Shell脚本一键安装mysql 5.6.15
Centos 6.4上面用Shell脚本一键安装mysql 5.6.15 #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...
- 多线程shell脚本检测主机存活
局域网中分了很多网段,而IP地址使用情况也未知,前期也没有规划和记录,当新的主机需要使用固定IP的时候,能否第一时间知道哪个IP空闲就显得很重要了,如果一个一个去ping的话太浪费时间. 这里分享一个 ...
- shell脚本实现监控shell脚本的执行流程及变量的值
这篇文章主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下 很多时候, ...
随机推荐
- MFC学习(二):消息映射
1. 消息映射表的组成 宏DECLARE_MESSAGE_MAP,用在类的声明中,用来声明消息映射表. 宏BEGIN_MESSAGE_MAP,在使用类声明外,用来定义链接节点和填写链表节点中的数据,其 ...
- POJ - 1251A - Jungle Roads 利用最小生成树
The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was s ...
- SFML从入门到放弃(2) 图像和音频
SFML从入门到放弃(2) 图像和音频 精灵 精灵(sf::Sprite)就是截取纹理(sf::Texture)的一块 或者重复纹理贴图 初始化精灵和纹理的一些方法: sf::Sprite init_ ...
- Access MongoDB Data with Entity Framework 6
This article shows how to access MongoDB data using an Entity Framework code-first approach. Entity ...
- vue element-ui 表格筛选,点击筛选数据
<el-table-column prop="productEnvVersion" label="运行环境" :filters="this.ru ...
- ios 字符串处理:截取字符串、匹配字符串、分隔字符串
1.截取字符串 NSString*string =@"sdfsfsfsAdfsdf";string = [string substringToIndex:7];//截取掉下标7之后 ...
- [转] 迁移 VMware 虚拟机到 KVM
迁移 VMware 虚拟机到 KVM 如何迁移 VMware 上的 Windows 及 Linux 虚拟机到基于 KVM 的虚拟机 目前 x86 平台上最流行的虚拟化软件是 VMware 公司的系列产 ...
- js 实现全国省市区三级联动
效果: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...
- html5兼容问题
1.html5对于ie9一下的版本不支持,所以我们可以添加(你可以下载至本地): <!--[if lt IE 9]> <script src="http://cdn.sta ...
- Web项目通过Maven部署到Tomcat的错误。
一直提示: Maven Build的时候,一直提示一个关键错误 Cannot invoke Tomcat manager: Error writing to server 找了网上提示说应该先启动To ...