Auto Restart Apache/Mysql Service on High Load
Sometime our server hang on high load which cause ssh hang so we are not able to login and check any service which are taking high memory or CPU nd also it cases our website down for some time. So we need a auto script which can restart services when taking too much load on server. This below script use for Auto Restart Apache/Mysql Service on High Load whatever take high load on cpu or ram and send mail so that details can be check on server on later or that time.
#!/bin/sh # location of index.php to overwrite with temporary message index_php_loc='sitepath/index.php'; default /var/www/index.php [email protected] # script to check server for extremely high load and restart Apache if the condition is matched check=`cat /proc/loadavg | sed 's/./ /' | awk '{print $1}'` # define max load avarage when script is triggered max_load='25' # log file high_load_log='/var/log/apache_high_load_restart.log'; # location to Apache init script apache_init='/etc/init.d/apache2'; # site_maintenance_msg="Site Maintenance in progress - We will be back online in a minute"; if [ $check -gt "$max_load" ]; then> #25 is load average on 5 minutes cp -rpf $index_php_loc $index_php_loc.bak_ap echo "$site_maintenance_msg" > $index_php_loc sleep 15; if [ $check -gt "$max_load" ]; then $apache_init stop sleep 5; $apache_init restart echo "$(date) : Apache Restart due to excessive load | $check |" >> $high_load_log; cp -rpf $index_php_loc.bak_ap $index_php_loc echo "service restart on high load please check the server"|mail -s "Apache Restart on high load" $mailid fi fi