自动监控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上一段时间,从使用的情况来看,效果还比较不错。
猜你喜欢
- 到http://www.phpwind.com/download.php下载对应编码的安装包,里面有个upload,用里面的文件覆盖你原来的
- “世界上最愚蠢的人,就是自以为聪明的人;同样,最想自己发财的人,往往也发不了财。”与以往特立独行的马云一样,如今马云依旧是妙语连珠。在人们频
- 雅虎首席执行官卡罗尔·巴茨(腾讯科技配图)北京时间11月19日消息,据国外媒体报道,《华尔街日报》专栏作家卡拉·斯韦什尔(Kara Swis
- 尽管网站仍然保持在线,但传奇网站海盗湾的站长最近终于决定永久关闭网站的Tracker服务器,只开放网站的DHT功能,一段传奇就此落幕。看起来
- 冯超是某公司的公关经理,最近他和同事们迷恋上了“偷菜”。为了偷好友的菜,他甚至忘记了工作了一整天的疲
- 有GoDaddy主机用户问该如何使用密码保护文件夹呢?其实密码保护特征让你能够限制Web登陆你的托管账户目录的行为。启用后,用户首次访问受保
- 本文假定读者已经理解双机互备的HA方案的基本概念。1. 双机互备HA方案的基本步骤建立一个双机互备方案的基本步骤是:1. 确定基本参数(如I
- 外部在我们着手清理内部之前,先站在外面,从大街上看一下您的站点——或者在谷歌搜索结果里看起来怎么样。只要随手打开离您最近的谷歌搜索框,使用查
- 日本著名3D GALGAME游戏厂商Illusion公司官方网站近日放出了一段其将在明年2月19日发售的最新作《真实的女朋友》(リアル彼女,
- 如何使用Godaddy主机拷贝Account Manager的文件到自己选择的目的地去呢?首先. 登陆你的Account Manager.第
- 话锋一转就到了系统权限设置与安全配置的实际操作阶段 系统设置网上有一句话是"最小的权限+最少的服务=最大的安全"。此句基
- 服务器不仅仅是企业网络设备的中枢,也是企业软件及数据库应用的主体。在实际运行中服务器经常会出现这样或那样的故障,软件的或者硬件的。很多故障是
- Windows Server集群(cluster)技术是以三层式应用程序的架构来设计的,每一层都有相对应的解决方案。例如,本文介绍的网络负载
- IDS是英文“Intrusion Detection Systems”的缩写,中文意思是&l
- 20岁的黑龙江无业人员段宗屹,通过发送 “灰鸽子”木马病毒,获取淘宝网店铺店主的银行信息,先后3次盗取店主账户内两万余元资金。近日,宣武法院
- Discuz!7.0中,对于会员来说,主题关注功能非常实用。在逛论坛的时候,发现了一个自己感兴趣的帖子,想跟踪此帖,关注此贴的发展,并且参与
- 我从去年元月份起,做了三个新站。三个站都遭遇了同样的问题,把我做新站过程中遇到的百度三月之痒写出来,希望对新做站的朋友有帮助。第一个站元月份
- 文字一出各路诸侯杀出,一个措手不及待吾友商发布!前不久视觉组同事们讨论了一个老话题 — 网站图片格式问题和对性能产生的影响其实大家每天都与图
- 4、打开审核策略开启安全审核是win2000最基本的入侵检测方法。当有人尝试对你的系统进行某些方式(如尝试用户密码,改变帐户策略,未经许可的
- 问题:使用GetArticleList标签,,显示的时间比较长时会换行解决方法。 解决方法:这里只要修改下文件即可,找到 Include/P