自动监控VPS负载并重启Web服务的脚本
来源:Timothy's Space 发布时间:2011-05-18 11:15:00
VPS其实和一般的独立Linux服务器,在使用上基本没有区别,因为现在的虚拟化技术以及很成熟了,不过VPS和独服还是有一个很大的差异,那就是系统资源和性能上。通常,VPS都是由一个独立服务器划分出来的,所以在资源和性能优势上,远比不上独服。
就拿前段时间本VPS受到的DDOS攻击来说,其实DDOS也是利用大量发起的请求,导致被攻击VPS(或服务器)内存资源被耗尽,系统负载过高,而导致80端口的Http服务无响应,从而达到最终的攻击目的。DDOS虽然防不胜防,不过总还是有一些办法,能把DDOS的影响减小的。比如定时监控系统状态,然后自动重启Web服务,这也是本文要介绍的一种方法。
在VPS被攻击的时候,有一些系统指标能反应出系统是否处于被攻击状态,一个就是查看内存剩余量,当然,这并不是最准确的方法,另外一种,就是查看Linux的系统平均负载值。
Linux系统负载介绍
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用’wait’)
- 没有被停止(例如:等待终止)
Linux系统中,通过很多命令都可以查看当前的系统平均负载值,比如:w,top或者uptime命令
命令输出的内容表示在过去的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 | grep httpd | 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 | grep httpd | 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 | grep httpd | 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上一段时间,从使用的情况来看,效果还比较不错。


猜你喜欢
- 用NT(2000)建立的Web站点在所有的网站中占了很大一部分比例,但NT的安全问题也一直比较突出,使得一些每个基于NT的网站都有一种如履薄
- 笔者水平不高,所学知识也大多是网上搜索而来。2006年终于赚得人生的第一筐土豆,07年初工作进入新的阶段,闲来无事,灌水自娱。总诀其实本文只
- 首先我先介绍下,我是站长网站长特训班的第一期学员。来这里已经3天了,学了很多在网上,在家里都学不到的经验,上午经过我们第一期的学员与铁风筝老
- 近日研究Google Adsense,终于知道了一条赚钱规则,按这个规则,应该可以优化Adsense提高收入了吧。这条规则其实非常的简单就是
- 3月2日,权威调研机构CCID(赛迪顾问,直属工信部电子信息产业研究院)正式发布《2009-2010年度中国服务器市场研究报告》,报告显示,
- linux系统中,利用grep打印匹配的上下几行如果在只是想匹配模式的上下几行,grep可以实现。//搜索inputfile中满足partt
- 9月30日消息,据国外媒体报道,在过去一个财年中,微软CEO史蒂夫·鲍尔默(Steve Ballmer)的薪酬减少5.
- 1.简介resolv.conf是各种操作系统域名系统解析器(DNS Resolver)的配置文件。每当一个程序需要通过域名来访问Intern
- 我们知道WIN2K系统最大的突破性和成功之一就在于它全新引入“活动目录(Active Directory)服务”,使得WIN2K系统Inte
- 为了便于搜索引擎抓取,俺们可以将wordpress进行静态URL重写、下面是URL ReWrite的规则!下面是Rewrite规则:(请将下
- 一。相对大小的字号在英文页面中,固定字号被称为“ frozen font sizes”,使用固定大小
- 众所周知,QQ和MSN已经成为中国各阶层网民普遍使用的IM工具,而且这个市场还在扩大之中。根据中国互联网络信息中心(CNNIC)在今年1月发
- 英文原文:Five Best FTP Clients无论你是做网站工作,还是运行一个家庭FTP服务器,或者你只是喜欢高速下载,一个稳定且功能
- 站长最关心什么,IP和金钱,也许还有更多。至少我最看重这两样,因为我是个做垃圾站的站长,我没有时间去思索和考虑网站对用户的体验度,也没有时间
- 第十七届万维网大会(WWW2008)结束招待晚宴在北京人民大会堂举行,昨晚,来自全球的互联网界精英悉数出席。百度总裁李彦宏在晚宴中致辞,并在
- FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。 熟悉并
- 环境:系统 WindowsApache 2.2加载Rewrite模块:在conf目录下httpd.conf中找到LoadModule rew
- 由于百度自然排名有时候喜怒无常,经常会出现巨大的跳跃性和不稳定性。一、先说跳跃性:关注的一个新站,在做了一些搜索引擎优化以后,大概30天左右
- 导读:最新一期美国《商业周刊》撰文,对谷歌界面的改版流程和背后的故事进行了介绍。以下为文章全文:第8次改版每天都有2.68亿人使用谷歌来搜索
- 今天网站在打开时发现提示 501 Method Not Implemented to /index.html not supported.了