如果“伺服器達到 MaxClients”,如何編寫 shell 腳本重新啟動 apache

如果“伺服器達到 MaxClients”,如何編寫 shell 腳本重新啟動 apache

最近我的博客總是關閉,它使用centos6.2+apache2.2+mysql5.5+php5.3.我已經籌集MaxClientshttpd.conf,但不太有用。

那麼是否可以編寫一個 shell 腳本(每 10 分鐘使用 crontab 運行一次)來讀取httpd/error_log最後一條訊息是否preg_match sending a SIGTERM自動重新啟動 apache?

答案1

解析日誌檔案可能非常棘手。與其嘗試這樣做,您可能最好使用腳本,例如可以從 crontab 條目運行的腳本。該腳本將嘗試存取伺服器,如果不成功,則會重新啟動 Apache。

腳本

腳本來源:bash腳本自動重啟Apache

#!/bin/sh
# Script that checks whether apache is still up, and if not:
# - e-mail the last bit of log files
# - kick some life back into it
# -- Thomas, 20050606

PATH=/bin:/usr/bin
THEDIR=/tmp/apache-watchdog
[email protected]
mkdir -p $THEDIR

if ( wget --timeout=30 -q -P $THEDIR http://localhost/robots.txt )
then
    # we are up
    touch ~/.apache-was-up
else
    # down! but if it was down already, don't keep spamming
    if [[ -f ~/.apache-was-up ]]
    then
        # write a nice e-mail
        echo -n "apache crashed at " > $THEDIR/mail
        date >> $THEDIR/mail
        echo >> $THEDIR/mail
        echo "Access log:" >> $THEDIR/mail
        tail -n 30 /var/log/apache2_access/current >> $THEDIR/mail
        echo >> $THEDIR/mail
        echo "Error log:" >> $THEDIR/mail
        tail -n 30 /var/log/apache2_error/current >> $THEDIR/mail
        echo >> $THEDIR/mail
        # kick apache
        echo "Now kicking apache..." >> $THEDIR/mail
        /etc/init.d/apache2 stop >> $THEDIR/mail 2>&1
        killall -9 apache2 >> $THEDIR/mail 2>&1
        /etc/init.d/apache2 start >> $THEDIR/mail 2>&1
        # send the mail
        echo >> $THEDIR/mail
        echo "Good luck troubleshooting!" >> $THEDIR/mail
        mail -s "apache-watchdog: apache crashed" $EMAIL < $THEDIR/mail
        rm ~/.apache-was-up
    fi
fi

rm -rf $THEDIR

路徑

停止/啟動腳本的路徑需要根據您的發行版安裝 Apache 的位置進行相應調整。像這樣的行:

        /etc/init.d/apache2 start >> $THEDIR/mail 2>&1

如果你使用的是 CentOS,會是這樣的:

        /etc/init.d/httpd start >> $THEDIR/mail 2>&1

可執行檔名稱

線條也是如此killlall。 CentOS 上可執行檔的名稱是httpd.

crontab 條目

該 cron 需要以 root 身分執行,以便它具有停止/啟動 Apache 的適當權限。

相關內容