`

centos/linux负载过高自动重启apache的脚本

阅读更多
抽时间找了一个centos/linux负载过高自动重启apache的脚本,保护你的vps不因超负荷被关闭。稍微改了点,适合所有可以通过 service httpd start | stop 来重启apache的vps或服务器。最后别忘记在crontab设置每隔几分钟执行一次即可。

一行命令自动安装,安装成功后请看 crontab -l :

wget  http://www.ctohome.com/linux-vps-pack/restart_apache_by_load.sh;sh restart_apache_by_load.sh;



TOP_SYS_LOAD_NUM表示到达这个负载的时候,就会停止apache。然后过段时间负载降下来后,再尝试启动apache

#!/bin/sh

# crontab usage: */3 * * * * /backup/www.ctohome.com/loadavg_restart_apache.sh >> /backup/www.ctohome.com/restart_apache.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 "#0#" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef | grep httpd | wc -l`
    /usr/sbin/apachectl stop
    sleep 8
    pkill httpd 
    sleep 8 
    for i in 1 2 3 
    do 
        if [ `pgrep httpd | wc -l` -le 0 ] 
        then 
            /usr/sbin/apachectl start
            sleep 30 
            echo "#1#" $(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 
        /usr/sbin/apachectl start 
        sleep 30 
        echo "#2#" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef | grep httpd | wc -l` 
    fi 
fi



没有什么坏处,至少还可以监控系统的历史负载。下面的是某个vps设置了最大负载3的重启apache情况,效果不错:
tail -f restart_apache.log
10-07-17 13:57:01 up 14:53, 2 users, load average: 0.34, 1.09, 1.14
10-07-17 14:00:01 up 14:56, 2 users, load average: 0.97, 1.06, 1.11
10-07-17 14:03:01 up 14:59, 2 users, load average: 1.38, 1.26, 1.18
10-07-17 14:06:01 up 15:02, 2 users, load average: 0.63, 0.92, 1.06
10-07-17 14:09:01 up 15:05, 2 users, load average: 0.98, 0.81, 0.98
10-07-17 14:12:01 up 15:08, 2 users, load average: 0.55, 0.71, 0.90
10-07-17 14:15:01 up 15:11, 2 users, load average: 0.46, 0.59, 0.81
10-07-17 14:18:02 up 15:14, 2 users, load average: 3.06, 1.30, 1.01
#0# 10-07-17 14:18:02 pkill httpd 38
#1# 10-07-17 14:18:51 start httpd 34
10-07-17 14:21:01 up 15:17, 2 users, load average: 1.14, 1.59, 1.20
10-07-17 14:24:01 up 15:20, 2 users, load average: 1.19, 1.45, 1.21
10-07-17 14:27:01 up 15:23, 2 users, load average: 0.29, 0.95, 1.05
10-07-17 14:30:01 up 15:26, 2 users, load average: 0.99, 0.85, 0.98
10-07-17 14:33:01 up 15:29, 2 users, load average: 1.15, 1.22, 1.12
10-07-17 14:36:01 up 15:32, 2 users, load average: 4.58, 2.94, 1.78
#0# 10-07-17 14:36:01 pkill httpd 36
#1# 10-07-17 14:36:49 start httpd 27
10-07-17 14:39:01 up 15:35, 2 users, load average: 2.24, 2.49, 1.79
10-07-17 14:42:01 up 15:38, 2 users, load average: 1.37, 1.87, 1.66
10-07-17 14:45:01 up 15:41, 2 users, load average: 0.69, 1.44, 1.54
10-07-17 14:48:01 up 15:44, 2 users, load average: 1.73, 1.68, 1.62
10-07-17 14:51:01 up 15:47, 2 users, load average: 0.81, 1.34, 1.49
10-07-17 14:54:01 up 15:50, 2 users, load average: 1.71, 1.25, 1.41
10-07-17 14:57:01 up 15:53, 2 users, load average: 1.93, 1.52, 1.47
10-07-17 15:00:01 up 15:56, 2 users, load average: 1.29, 1.43, 1.44
10-07-17 15:03:01 up 15:59, 2 users, load average: 1.45, 1.42, 1.43
10-07-17 15:06:01 up 16:02, 2 users, load average: 0.73, 1.24, 1.36
10-07-17 15:09:01 up 16:05, 2 users, load average: 1.66, 1.55, 1.47
10-07-17 15:12:03 up 16:08, 2 users, load average: 3.59, 2.02, 1.63
#0# 10-07-17 15:12:07 pkill httpd 35
#1# 10-07-17 15:12:55 start httpd 28
10-07-17 15:15:01 up 16:11, 2 users, load average: 1.19, 1.78, 1.63
10-07-17 15:18:01 up 16:14, 2 users, load average: 1.38, 1.60, 1.58
10-07-17 15:21:01 up 16:17, 2 users, load average: 3.32, 2.20, 1.79
#0# 10-07-17 15:21:01 pkill httpd 33
#1# 10-07-17 15:21:50 start httpd 33
10-07-17 15:24:01 up 16:20, 2 users, load average: 1.18, 1.66, 1.64
10-07-17 15:27:01 up 16:23, 2 users, load average: 1.67, 1.73, 1.67
10-07-17 15:30:01 up 16:26, 2 users, load average: 1.15, 1.55, 1.60
10-07-17 15:33:01 up 16:29, 2 users, load average: 0.85, 1.30, 1.49
10-07-17 15:36:01 up 16:32, 2 users, load average: 0.30, 0.89, 1.30
10-07-17 15:39:01 up 16:35, 2 users, load average: 0.37, 0.90, 1.25

脚本执行如果报错

/backup/www.cthome.com/loadavg_restart_apache.sh: line 6: bc: command not found
/backup/www.cthome.com/loadavg_restart_apache.sh: line 6: [: -eq: unary operator expected

表示没有bc命令,centos可以用 yum -y install bc 安装它
分享到:
评论

相关推荐

    tomcat+linux负载均衡集群配置

    - Tomcat 自动启动脚本路径: `/etc/init.d/tomcat` #### 二、Apache 对 Tomcat 集群的支持方式 Apache 对 Tomcat 的支持有两种方式: 1. **通过 Apache 内置的 Proxy_AJP:** - **特点:** 配置相对简单,但仅...

    apache与nginx安装使用

    Nginx则擅长静态文件服务、反向代理和负载均衡,性能优秀,尤其在高并发场景下。 如果你的网站主要是动态内容,Apache可能更合适。如果需要处理大量静态资源请求或需要反向代理功能,Nginx是更好的选择。在实际部署...

    Linux配置Apache服务器

    在Linux系统中配置Apache服务器是一项基础且重要的任务,它涉及到网站托管、开发和测试环境的建立。Apache HTTP Server是世界上最广泛使用的Web服务器软件,以其开源、稳定和强大的特性深受开发者喜爱。下面将详细...

    apache-activemq Linux版本

    Apache ActiveMQ是业界广泛使用的开源消息中间件,尤其在Linux环境下表现出色。它基于Java语言开发,遵循Apache软件基金会的许可证,并且实现了多种消息传递协议,包括OpenWire、STOMP、AMQP和XMPP等。在Linux系统上...

    Linux+apache+php

    **负载均衡**:在 LAMP 基础上实现负载均衡,通常涉及到使用负载均衡器,如 Nginx 或 HAProxy,它们可以将来自用户的请求分发到多个后端服务器(运行着 Apache 和 PHP 的 CentOS 系统),以平衡负载,提高服务响应...

    tomcat apache cluster 脚本

    3. **目标**: 使用Shell脚本来完成Tomcat与Apache之间的集群配置,并实现负载均衡。 #### 三、脚本详细解析 ##### 1. 安装Java环境 ```bash rpm -ivh /root/jdk-1_5_0_14-linux-i586.rpm ``` - 这行命令使用`rpm...

    lampLinux+Apache+Mysql+Perl/PHP/Python

    Linux拥有众多发行版,如Ubuntu Server、CentOS等,它们都支持LAMP环境的安装和配置。 - **特点**: - 开源免费,降低了运营成本。 - 高度可定制,可以根据需求调整系统配置。 - 强大的社区支持,有大量的文档和...

    apache for linux

    Linux有许多发行版,如Ubuntu、CentOS、Debian等,对于Apache安装过程,不同发行版略有差异,但基本步骤相似。本教程以常见的CentOS为例进行说明。 **三、Apache安装** 1. **更新系统**:首先确保系统软件源是最新...

    Centos 7环境开发者环境初始化脚本

    对于CentOS 7操作系统,这个过程可以通过编写初始化脚本来自动化,提高效率并确保一致性。本资源包提供的"Centos 7环境开发者环境初始化脚本"正是为了实现这一目的。 首先,让我们详细了解一下这个脚本中涉及的关键...

    apache和C++实现fastcgi时Apache中httpd.conf的配置

    在构建高性能Web服务时,FastCGI是一种常用于Apache服务器与后端应用程序(如C++编写的动态内容处理程序)之间交互的技术。FastCGI能够有效地分担服务器负载,提高响应速度,因为它允许进程持久存在,而不是每次请求...

    linux+java+tomcat+apache环境搭建.pdf

    在这个特定的环境中,我们看到三台服务器分别用于运行Apache和两个Tomcat实例,这样的配置通常是为实现负载均衡或高可用性。以下是详细的知识点解析: 1. **Linux CentOS 5.1**: CentOS是一款基于Red Hat ...

    Apache2.2和Tomcat7集成负载均衡(软件和教程)

    【Apache2.2和Tomcat7集成负载均衡】 在现代Web应用环境中,为了提供高可用性和性能优化,经常需要将HTTP服务器(如Apache)与应用服务器(如Tomcat)进行集成,并实现负载均衡。Apache2.2和Tomcat7的集成能够充分...

    LINUX教程之22-apache服务器4

    在本Linux教程中,我们将深入探讨Apache服务器的配置与管理,这是第四部分的内容。Apache HTTP Server,简称Apache,是世界上最广泛使用的Web服务器软件,以其开源、稳定和强大的可扩展性著称。它允许用户通过HTTP和...

    apache tomcat linux

    9. **负载均衡与集群**:在高流量环境中,可以使用Apache HTTPD或其它负载均衡器(如Nginx)实现Tomcat实例的负载均衡,以提升系统可用性和容错性。 10. **监控与故障排查**:使用工具如JMX(Java Management ...

    linux+java+tomcat+apache环境搭建[参考].pdf

    同时,为了实现高可用性和容错性,可能还需要配置多个Tomcat实例和Apache的负载均衡策略。 总的来说,这个环境搭建的过程涉及到了基础的系统服务管理、网络配置、软件安装以及Java和Web服务器的配置。对于软件...

    CenOS 6 linux server cookbook

    通过以上对《CentOS 6 Linux Server Cookbook》这本书中涉及的知识点的总结和解释,我们可以看到该书为读者提供了全面而深入的学习资料,不仅覆盖了基本的操作系统安装与配置,还包括了系统管理和维护、高级功能、...

    Linux+Apache+Mysql+PHP典型配置.pdf

    - Apache的配置文件`httpd.conf`中,可以调整监听端口、MaxClients(最大并发连接数)、KeepAlive等参数,以适应不同负载需求。 - MySQL配置文件`my.cnf`可调整缓冲池大小、查询缓存等,以优化性能。 - PHP配置...

Global site tag (gtag.js) - Google Analytics