Reiniciar automáticamente los servicios web basados ​​en los valores de carga del sistema

  
                  El VPS es básicamente el mismo que el servidor Linux autónomo en general, porque la tecnología de virtualización es muy madura, pero aún existe una gran diferencia entre el VPS y el servicio único, es decir, los recursos del sistema y el rendimiento. Generalmente, el VPS está dividido por un servidor separado, por lo que en términos de recursos y ventajas de rendimiento, es mucho menos que un solo servicio.
Toma esto hace algún tiempo por VPS ataque DDoS, de hecho, DDoS también utilizan un gran número de peticiones iniciadas, lo que resulta en ser atacado VPS (o servidor) los recursos de memoria se agotan, la carga del sistema es demasiado alto, lo que llevó a 80 El servicio Http del puerto no responde, por lo que logra el ataque final. Aunque DDOS no se puede defender, siempre hay formas de reducir el impacto de DDOS. Por ejemplo, para monitorear periódicamente el estado del sistema y luego reiniciar automáticamente el servicio web, este también es un método que se presenta en este artículo.
cuando el ataque VPS, hay algunos indicadores del sistema pueden reaccionar si el sistema está bajo ataque, a fin de que la cantidad restante de la memoria, por supuesto, este no es el método más preciso, otra es mirar El valor promedio de carga del sistema de Linux. introducción de carga del sistema
media carga del sistema
Linux se define como un árbol de procesos ejecución de la cola promedio dentro de un intervalo de tiempo específico. Si un proceso satisface las siguientes condiciones, estará en la cola de ejecución:

: no está esperando el resultado de la operación de E /S

: no ingresa activamente el estado de espera (es decir, no hay llamada) 'esperar')
- no se detiene (por ejemplo: esperando la terminación)
sistema Linux, muchos comandos pueden ser vistos por el valor de carga actual del sistema, por ejemplo: w, superior o el tiempo de actividad La salida del comando



indica el número promedio de procesos en la cola de ejecución en los últimos 1, 5 y 15 minutos.

En circunstancias normales, estos valores tendrán algunas diferencias según el número de CPU en el sistema. Para una CPU de un solo núcleo, si el valor de carga alcanza 1, indica que la carga del sistema ha alcanzado el 100%, pero para el sistema de doble núcleo. En términos de 1, solo el valor de carga del sistema es solo alrededor del 50%.

y así sucesivamente, en sistemas multiprocesador, la media de carga se determina en función del número de núcleos. Calculado a una carga del 100%, 1.00 representa un solo procesador, mientras que 2.00 significa que hay dos procesadores duales, luego 4.00 significa que el host tiene cuatro procesadores.

Reinicia automáticamente el servicio web de acuerdo con el valor de carga del sistema

La siguiente secuencia de comandos usa el VPS con el servidor Apache como ejemplo para juzgar periódicamente el valor de carga del sistema. Cuando alcanza 5, se considera que el sistema está sobrecargado. Ejecute, en este momento, el script reiniciará automáticamente el servicio Apache, liberará los recursos del sistema, para lograr un funcionamiento sin problemas del servidor VPS.

* Nota: El script proviene de la red, no es original, la fuente es desconocida, hice algunos cambios.


#! /bin /sh
#usage: * /2 * * * * root /root/checkload.sh > > /root/checkload.log

TOP_SYS_LOAD_NUM = 5
SYS_LOAD_NUM = `uptime awk '{print $ (NF-2)}' sed 's /, //'`

echo $ (fecha + "% y-% m- % d ")` uptime`
si [`echo" $ TOP_SYS_LOAD_NUM < $ SYS_LOAD_NUM "bc` -eq 1]
luego
echo" AutoStart: "$ (date +"% y-% m -% d% H:% M:% S ")" pkill httpd "` ps -ef grep httph wc -l`
pkill httpd
sleep 10
para i en 1 2 3
do
si [`pgrep httpd wc -l` -le 0]
entonces
service httpd start
sleep 15
echo" AutoStart: "$ (date +"% y-% m- % d% H:% M:% S ")" inicia httpd "` ps -ef grep httpd wc -l`
fi
hecho
else
if [`pgrep httpd wc -l` -le 0]
luego
service httpd start
sleep 15
echo "AutoStart:" $ (fecha + "% y-% m-% d% H:% M:% S") "start httpd" `ps -ef grep httpd wc -l`
fi
fi


TOP_SYS_LOAD_NUM en el script indica el valor de carga promedio máximo permitido del sistema, cuando se excede este valor El script comienza a reiniciar el servicio de apache. El uso del script también es muy simple, directamente a /etc/cron.d/para crear un archivo de ejecución cronometrado, complete el siguiente contenido:


* /2 * * * * root /root /checkload .sh > > /root/checkload.log


donde * /2 significa que el script especificado se ejecuta cada dos minutos y el resultado de la ejecución se envía al archivo /root/checkload.log. .

También puede modificar la frecuencia de ejecución de acuerdo con sus necesidades.

Resumen

Este script se ha implementado en mi VPS durante un tiempo y, en la situación de uso, el efecto es bastante bueno.

Copyright © Conocimiento de Windows All Rights Reserved