CentOS下Web服务器CPU负载超过阀值自动重启shell脚本

说明:
 
操作系统:CentOS
 
web服务器:apache
 
问题:
 
搜索引擎的爬虫导致网站在某一段时间内访问量剧增,服务器压力过大,网站访问超时、页面无法打开。
 
解决办法:
 
定时监控服务器负载,超过一定阀值后,自动重启web服务。
 
apache安装目录:/usr/local/apache
 
脚本运行日志文件:/usr/local/apache/check_cpu_load.log
 
脚本存放目录:/home/crontab
 
cd /home/crontab
 
vi check_cpu_load.sh #编辑,添加以下代码
 
#!/bin/sh
 
#crontab: */5 * * * * /home/crontab/check_cpu_load.sh >> /usr/local/apache/check_cpu_load.log
 
TOP_SYS_LOAD_NUM=3
 
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 "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
/usr/local/apache/bin/apachectl stop
 
sleep 5
 
pkill httpd
 
sleep 5
 
for i in 1 2 3
 
do
 
if [ `pgrep httpd | wc -l` -le 0 ]
 
then
 
/usr/local/apache/bin/apachectl start
 
sleep 30
 
echo "#1#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
fi
 
done
 
else
 
if [ `pgrep httpd | wc -l` -le 0 ]
 
then
 
/usr/local/apache/bin/apachectl start
 
sleep 30
 
echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` >> /usr/local/apache/check_cpu_load.log
 
fi
 
fi
 
:wq! #保存退出
 
crontab -e #添加计划任务
 
*/5 * * * * /home/crontab/check_cpu_load.sh >> /usr/local/apache/check_cpu_load.log
 
:wq! #保存退出
 
service crond restart #重启计划任务
 
通过以上设置后,当服务器负载超过3时,在5分钟内会自动运行脚本,重启apache服务,使网站恢复访问

时间: 2024-07-29 16:45:52

CentOS下Web服务器CPU负载超过阀值自动重启shell脚本的相关文章

多台Web服务器做负载均衡解决方案

环境说明: 开发平台是DO.NET B/S .NET Framework 1.1 正式WEB服务器和测试机,均为win2003 原有一个主网站,在六台WEB服务器做负载均衡.运行比较稳定. 现新开发一个子站,将布署在另三台WEB服务器上做负载均衡.这个负载均衡设置类似主网站的设置. 解决步骤: 1)子站在测试机测试通过,运行正常.准备布署到正式环境下(三台WEB服务器) 2)将子站程序拷贝到那三台WEB服务器上,配置好子站相关配置,开放站点与负载均衡开始测试. 3)测试时,页面显示正常,但在触发

Red Hat EnterPrise Linux 5.4下web服务器的综合使用

本文将详细的讲解一下linux下web服务器的使用,相信这对于web网站维护人员来说是非常有用的,在linux下实现web服务器的软件有很多,最常用的就是apache啦,小编这里使用的就是5.4自带的apache 2.2.3,小编将从多个方面来讲解apache的配置以及使用,内容会比较多啦,希望读者你能耐心哈. 小编我先列出要实现哪些个项目: 1.apache的安装及启动 2.基本个人站点的实现 3.资源性web服务器的搭建 4.web网站的安全性 5.虚拟站点实现(相当实用啊) 6.web网站

centos-LAMP 服务器CPU使用率100%,只能重启服务器,怎么办

问题描述 LAMP 服务器CPU使用率100%,只能重启服务器,怎么办 服务器是LAMP的,时常会cpu使用率100%,用的ShopNC系统.CPU 100%时登陆不上服务器,只能重启服务器.重启后就正常了.请问各位大神,这是什么问题,怎么解决?跪求啦 -_-

linux下mysql如何自动备份shell脚本_linux shell

Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库.其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令. #!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can s

Loadbars 0.2.1发布 实时观察远程服务器CPU负载

Loadbars 0.2.1这个版本增加了在CPU下的切换模式,每台主机之间的灰色分隔线.它具有更智能的CPU核心编号在CPU切换模式中. FreeBSD服务器CPU的图形支持已通过测试,并使其安装在/compat/linux/proc的linprocfs下工作.许可证已更改到GPLv2.有更多的文档和轻微错误修正. Loadbars是一个小的脚本,可以用来观察在一次实时的多个远程服务器CPU的负载.它使用SSH相互连接(使用SSH公钥/私钥的auth)几台服务器和vizualizes所有服务器

Loadbars 0.2.0.2发布 实时观察远程服务器CPU负载

Loadbars 0.2.0.2这是一个错误修正的发行版(棒宽计算错误得到修复). Loadbars是一个小的脚本,可以用来观察在一次实时的多个远程服务器CPU的负载.它使用SSH相互连接(使用SSH公钥/私钥的auth)几台服务器和vizualizes所有服务器的CPU(无论是概括或者购买每个单独的核心). Loadbars不收集CPU负载,但提供绘制图表以供日后进行分析.然而,由于这类工具产生结果之前,需要大量的时间,Loadbars可以让您立即观察当前状态. Loadbars不记忆或记录任

CentOS下Web Panel面板安装配置教程

和虚拟主机相比,VPS有相当得天独厚的优势.不过对毫无Linux使用经验的用户来说,要配置完整的WEB环境并不是一件简单的事情.网上也有很多一键安装的WEB环境的 脚本和方法,不过大多只能安装和配置必须的环境,但是还是不能进行图形化操作.今天就分享介绍一个图形化控制面板CentOS Web Panel. CentOS Web Panel简称CWP.用过主机91的用户应该知道cPanel.CWP的许多功能设置,操作方式和cPanel类型,可以说是免费版的cPanel.甚至你可以直接从CWP导入cP

CentOS 6.x系统升级Python到2.7版本的Shell脚本分享_linux shell

在CentOS 6.x上,默认自带的Python是2.6.x版本,这个版本的Python有点老了,比如"collections.OrderedDict"就是2.7才有的,而且著名的Python Web框架Django的新版(如:1.7)就不支持Python2.6,最低要求是2.7了.而一些公司或者共有云上的服务器就是使用CentOS6.x,所以也就有了升级Python到2.7的需求. 升级Python之前,需要先安装一些工具和软件库,否则后面安装Python或pip时可能出错. Pyt

Linux下将数据文件的指定域读取到shell脚本中

这个例子说明了怎样在Linux下shell脚本中从数据文件读取特定的域(field)并进行操作.例如,假设文件employees.txt的格式是{employee-name}:{employee-id}:{department-name},以冒号进行划分,如下所示. $ cat employees.txt Emma Thomas:100:Marketing Alex Jason:200:Sales Madison Randy:300:Product Development Sanjay Gupt