Shell编程检测监控mysql的CPU占用率

shell编程很强大!

网站访问量大的时候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.sh

时间: 2024-10-03 10:15:08

Shell编程检测监控mysql的CPU占用率的相关文章

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

mysql最大连接数默认只有100,当很多用户访问带有数据库的站点如论坛时,会造成mysql服务CPU占用率上升,并无法提供服务

问题 mysql最大连接数默认只有100,当很多用户访问带有数据库的站点如论坛时,会造成mysql服务CPU占用率上升,并无法提供服务 解决方案 为mysql增加最大连接数的方法: --------------------------------------Linux: vi /etc/my.cnf 找到[mysqld]一段,加入如下一行:set-variable=max_connections=500 注意:该参数必须加入[mysqld]配置段内,加入别的地方无效. 例如一个标准的my.cnf

编程之美 之 让CPU占用率听你指挥

昨天在bbs上淘到了这本编程之美.顺手刷了第一章,很有意思.第一章的要求是要控制CPU曲线,绘制出对应的形状. 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的对应区域直接绘制图形呢? 然后就去查找API, 可惜搜索能力不行,最终还是没有找到. 然后看书上的解释, 太棒了. 解决这道题目的核心是. CPU占用率的概念,应该是指 CPU忙的时间与总时间的比,他是一个平均值的概念.也就是说.通过控制CPU忙闲时间的比值,我们能够大致控制CPU的占用率. 通过这个思想能够 控

使用 nice、cpulimit 和 cgroups 限制 cpu 占用率

Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的能够正常运转. 同时,内核也很公正:它将资源公平地分配给各个进程. 但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? 答案是需要由用户来为内核指定进程的优先级 大部分进程启动时的优先级是相同的,因此Linux内核会公平地进行调度. 如果想让一个CPU密集型的进程运行在较低优先级,那么你就得事先配置好调度器. 下面介绍3种控制

[转帖]Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践

Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践 https://www.jianshu.com/p/d4e31301ba2e 一.问题描述 Linux服务器的配置是4核16G,将war包部署到tomcat后,启动tomcat,发现内存占用率不高,但是CPU一直高达100%:浏览器输入相关url也无法访问该项目,且tomcat的进程一直存在,程序的配置什么的都没问题啊,一头雾水......通过top命令查看服务器的性能状况如下: [[email prote

编程之美读书笔记1.1——让CPU占用率曲线听你的指挥

http://blog.csdn.net/pipisorry/article/details/36189155 <strong><span style="font-size:48px;color:#ff0000;">问题:</span></strong>写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率. 假设机器是多CPU,上面的程序会出现什么结果?怎样在多个CPU时显示相同的状态?比如.在双核的

C#监控-通过PerformanceCounter实现Process的Cpu占用率以及GC占用监控

监控每个进程占用的cpu,比如任务管理器的进程tab中的CPU 在代码里,可以通过新建PerformanceCounter来建立监控,其对应的Windows中的自带性能分析工具Perfmon 看下该类的定义中,只要有三个概念: categoryName: The name of the performance counter category (performance object) with which this performance counter is associated. count

编程之美学习笔记(一)-让CPU占用率曲线听你指挥

终于放假了,开始在家里看一本向同学借来被程序猿尊称的必看经典书之一---<编程之美>.这本书给我的第一感觉是,他不单单是一本介绍算法的书,更不是一本纯算法的书,更多的是跟生活的很多实际问题息息相关,让你能更多地思考当我们面对现实实际问题的时候如何用自己从之前书本学习到的理论的知识去解决他们,如何以理论联系实际.这个寒假都会更新从这本书中学习来的知识,也希望有相同兴趣的人可以一起共同交流.那么就开始进入正题吧. 如何让cpu占用率呈现直线或者正弦曲线呢,看完第一章节,最简单的无非是调整自己写的程

C++ 多线程编程解决CPU占用率高问题

在用C++进行多线程编程的时候,时常需要写一些类似于死循环的结构来执行代码,这些死循环如果没有经过处理一直开着,那么CPU的占用率就会居高不下的做着很多无用的操做.为解决这个问题我们可以通过在各线程中的适当位置添加Sleep函数来休眠该线程,使其少做这些无用的操作.经过这个处理,正常能压缩掉一半以上的CPU占用.C++ 多线程编程解决CPU占用率高问题