Script khởi động lại Webserver Nginx, Apache khi CPU cao

Bài này mình sẽ hướng dẫn các bạn tại Script và cron job tự động khởi động lại webserver Nginx, Apache khi CPU bạn chạy High( Cao).

Nó sẽ kiểm tra 5 phút 1 lần và tự động khởi động lại Webserver khi CPU > 1.30

Bài viết mình test trên VPS CPU 2 nhân Xeon(R) CPU E5-2630L 0 @ 2.00GHz . Ram 2G. OS Centos

Các lỗi thường gặp khi visit vào website nhiều, làm tình trạng CPU cao có có nhiều Time-Out cách này đơn giản là restart lại webserver do đó chạy sẽ mượt hơn 😀

Bước 1: Tạo File Script kiểm tra

cd /usr/local/
mkdir auto
cd auto
nano -w restart.sh

Các bạn Paster đoạn sau vào:

Đối với Nginx

#!/bin/bash

current_load_avg=$(uptime | awk ‘{print $(NF-2)}’ | awk -F “,” ‘{print $1}’)
alert_load_avg=1.30

check=$(bc <<< “$current_load_avg > $alert_load_avg”)

if [ “$check” -eq 1 ]; then
/etc/init.d/nginx restart > /dev/null 2>&1
echo `date` “: restart nginx. Current load is $current_load_avg” >> /opt/scripts/restart_nginx.log
fi

script-1

Đối với Apache:

#!/bin/bash

current_load_avg=$(uptime | awk ‘{print $(NF-2)}’ | awk -F “,” ‘{print $1}’)
alert_load_avg=1.30

check=$(bc <<< “$current_load_avg > $alert_load_avg”)

if [ “$check” -eq 1 ]; then
/etc/init.d/httpd reload > /dev/null 2>&1
echo `date` “: restart apache. Current load is $current_load_avg” >> /opt/scripts/restart_apache.log
fi

Bấm CRT+X để ghi lại Bấm Y [Yes]. Sau đó chmod 755 file restart.sh đó

chmod 755 restart.sh

Bước 2: Tạo File cron tự động

cd ~
cd /etc/cron.d
nano -w auto_restart

Paste đoạn script sau:

*/5 * * * * root /usr/local/auto/restart.sh >/dev/null 2>&1

Bấm CRT+X để ghi lại. Done! 

Với cách tạo cron này các bạn có thể áp dụng tương tự để tự làm để khởi động lại Mysql, PHP… khi gặp vấn đề nào đó. Tuy nhiên CPU cao còn có nhiều nguyên nhân không phải do nhiều visit đâu nhé, còn do cách các bạn tối ưu Website nữa

Nếu thấy hay like cho phát!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Scroll To Top