User Tools

Site Tools


Sidebar


Tags Cloud
apache_checker

This is an old revision of the document!


Скрипт автоподъема apache

Костыль проверяет количество чайлдов апача, если это количество меньше значения директивы MinSpareServers, то прибивает все процессы вебсервера через kill -9, чистит семафоры и стартует апач. Добавить в крон на каждую минуту.

* * * * * /opt/scripts/apache/apache_checker.sh check
# mkdir /opt/scripts/apache
#!/bin/sh

ALERTEMAIL="[email protected]"
APACHECTL=/usr/sbin/apache2ctl
SCRIPT_DIR=/opt/scripts/apache
RUNNING_PROCESSES=`ps auxww | grep -c bin/apache`;
APACHEUSER="www-data"
MinSpareServers="24"

######## [DO NOT MODIFY] ###

LOG_FILE=${SCRIPT_DIR}/status.log
DATE=`date '+%Y-%m-%d %T'`


apache_start()
{
    $APACHECTL start;
}

apache_stop()
{
    $APACHECTL stop;
    sleep 1;
    killall -9 apache httpd apache2 >/dev/null 2>&1;
}

apache_restart()
{
    apache_stop;
    sleep 1;
    apache_semclear;
    apache_start;
}

# if not running - start
apache_check()
{
    if
        [[ ${RUNNING_PROCESSES} -le $MinSpareServers ]]; then
        apache_restart;
        echo "${DATE} ALERT: `hostname -f` - apache was restarted" >> ${LOG_FILE};
        echo "${DATE} ALERT: `hostname -f` - apache was restarted" | /usr/sbin/sendmail $ALERTEMAIL;
    fi
}

# clear semaphores
apache_semclear()
{
    for i in `ipcs | grep $APACHEUSER | awk -F ' ' '{ print $2}'`
    do
        ipcrm -s $i;
    done
}

case $1 in
    start)
        apache_start;
    ;;
    stop)
        apache_stop;
    ;;
    restart)
        apache_restart;
    ;;
    check)
        apache_check;
    ;;
    semclear)
        apache_semclear;
    ;;
    *)
    echo "Script usage: $0 start | stop | restart | check | semclear";
esac
apache_checker.1387127233.txt.gz · Last modified: 2013/12/15 17:07 by kyxap