命令输出的内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
通常情况下,这些值会根据系统的CPU个数有一些区别,对于单核CPU来说,如果负载值达到了1,表明系统负载已经达到了100%,不过对于双核系统来说,1只表示系统负载值只达到50%左右。
以此类推,在多处理器系统中,负载均值是基于内核的数量决定的。以 100% 负载计算,1.00 表示单个处理器,而 2.00 则说明有两个双处理器,那么 4.00 就说明主机具有四个处理器。
根据系统负载值自动重启Web服务
下面的脚本,以装有Apache服务器的VPS为例,定时判断系统负载值,当达到5时,认为系统已经超负荷运转,这时,脚本会自动重启Apache服务,释放系统资源,以达到让VPS服务器平稳运行的目的。
*注:脚本来自网络,非原创,出处不明,本人做了少许改动。
#!/bin/sh #usage: */2 * * * * root /root/checkload.sh >>/root/checkload.log TOP_SYS_LOAD_NUM=5 SYS_LOAD_NUM=`uptime awk '{print $(NF-2)}' sed 's/,//'` echo $(date +"%y-%m-%d") `uptime` if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM" bc` -eq 1 ] then echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef grephttpd wc -l` pkill httpd sleep 10 for i in 1 2 3 do if [ `pgrep httpd wc -l` -le 0 ] then service httpd start sleep 15 echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef grephttpd wc -l` fi done else if [ `pgrep httpd wc -l` -le 0 ] then service httpd start sleep 15 echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef grephttpd wc -l` fi fi |
脚本中TOP_SYS_LOAD_NUM表示最大允许的系统平均负载值,当超过这一值的时候,脚本就开始重启apache服务。脚本的使用也挺简便,直接到/etc/cron.d/ 建立一个定时执行文件,填入如下内容即可:
*/2 * * * * root /root/checkload.sh >>/root/checkload.log |
这里*/2,表示每两分钟执行一次指定的脚本,并将执行结果输出到/root/checkload.log文件中。
你也可以根据自己的需要,来修改执行频率。
小结
此脚本已经部署到我的VPS上一段时间,从使用的情况来看,效果还比较不错。
新闻热点
疑难解答
图片精选