¿Qué debo hacer si el servidor Nginx tiene una carga de CPU y un uso de memoria de proceso elevados?

¿Descubrió de repente en el trabajo que el uso de CPU de Nginx se ha disparado? Para empeorar las cosas, los múltiples procesos de trabajo de Nginx consumen recursos como locos cada vez que miro los procesos.

Al ver esta escena, se te calienta la cabeza y no puedes evitar gritar: "Dios mío, ¿el servidor va a explotar? No te preocupes, esto no significa que tu servidor va a estar "terminado". pero Nginx ¡Necesitamos que hagas una optimización integral!

Análisis de las causas de la carga excesiva de Nginx.

¿Qué debo hacer si el servidor Nginx tiene una carga de CPU y un uso de memoria de proceso elevados?

Primero, tenemos que descubrir,¿Por qué Nginx de repente se "agota"?Hay muchas razones para el problema, no tengas miedo, averigüémoslo juntos a continuación.

1. Configuración irrazonable

En el archivo de configuración de Nginx, el punto más importante es worker_processes. Este parámetro determina la cantidad de procesos iniciados por Nginx.

  • Si configura muy pocos procesos de trabajo, la carga de la CPU se disparará; si configura demasiados, habrá memoria insuficiente.
  • Tienes que encontrar un punto de equilibrio, por ejemplo,Establezca work_processes en 1 o 2 veces la cantidad de núcleos de CPU.
  • Si tienes 4 núcleos entonces prueba worker_processes 4 O configúrelo directamente en auto.

2. Aumentan las visitas

A veces, la carga de Nginx aumenta repentinamente no porque hayas cometido un error, sino porque el número de visitas es demasiado alto.Las solicitudes de acceso altamente simultáneas harán que el proceso de trabajo de Nginx se vea abrumado., cada proceso está sobrecargado y la CPU y la memoria también están llenas. En este momento, es posible que necesite mejorar los recursos del servidor, como aumentar la cantidad de núcleos de CPU o aumentar la memoria. Por supuesto, esto también es un recordatorio: no olvide considerar la descarga de CDN o el equilibrio de carga.

3. Ataques maliciosos encontrados

Ser "muy popular" en Internet no siempre es algo bueno. Los ataques maliciosos pueden atacarlo en cualquier momento. Si descubre que el uso de la CPU es anormalmente alto y la fuente de la IP solicitada es sospechosa, es muy probable que su sitio web esté sufriendo un ataque DDoS. En este momento,Necesita implementar un firewall o limitar la frecuencia de acceso inmediatamente, como usar el módulo de limitación actual que viene con Nginx o configurar una lista negra de IP.

¿Cómo resolver el problema del alto uso de memoria del proceso Nginx?

Entonces la pregunta es, ¿por qué el proceso de trabajo de Nginx consume tantos recursos? Tenemos que empezar por la configuración y optimizarla paso a paso.

Método de configuración

  1. Abrir el archivo de configuración de Nginx: Por lo general, el archivo de configuración principal de Nginx se encuentra en /etc/nginx/nginx.conf.

  2. 设置 worker_processes: Encontrado en el archivo de configuración events bloques, configuraciones worker_processes valor. si no events bloque, necesitas crear uno.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. Configurar correctamente las conexiones_trabajadores

nginx worker_connections El parámetro determina el número máximo de conexiones que cada proceso de trabajo puede manejar. Si es demasiado pequeño, afectará el rendimiento de la concurrencia; si es demasiado grande, puede consumir demasiados recursos.

¿Cómo calcular el valor apropiado?

Suponiendo que tienes una CPU de 4 núcleos y 16 GB de RAM, un punto de partida seguro es worker_connections 4096.

Pero si su sitio web tiene mucho tráfico, considere aumentar este valor a 8192 para garantizar que cada proceso pueda manejar suficientes solicitudes.

events {
    worker_connections 8192;
}

De esta forma, la potencia de procesamiento de Nginx mejorará enormemente.

2. Ajustar keepalive_timeout

Otro parámetro clave para que Nginx maneje solicitudes es keepalive_timeout.

Esta configuración determina cuánto tiempo se puede mantener la conexión del cliente al servidor.

Si se establece demasiado tiempo, ocupará demasiados recursos de conexión..

Puedes intentarlo keepalive_timeout Establezca 15 segundos para mantener la conexión y liberar recursos.

keepalive_timeout 15;

3. Optimizar los límites de los descriptores de archivos

Por defecto,Linux El sistema tiene un límite en la cantidad de descriptores de archivos que puede abrir cada proceso.

Si Nginx necesita procesar una gran cantidad de archivos (como recursos estáticos), es posible que vea un error de Nginx que le indique "too many open files".

Puedes pasar worker_rlimit_nofile Aumentar el límite de descriptores de archivos, por ejemplo establecido en 65535.

worker_rlimit_nofile 65535;

4. Habilitar el almacenamiento en caché y gzip

El almacenamiento en caché y la compresión son dos claves para optimizar el rendimiento de un sitio web.

Al habilitar la función de almacenamiento en caché de Nginx, los recursos estáticos (como imágenes y archivos JS) se pueden almacenar en caché en la memoria., reduciendo así en gran medida la carga en el servidor.

Además, activar la función de compresión gzip puede reducir la cantidad de datos transmitidos y mejorar la velocidad del sitio web.

gzip on;
gzip_types text/plain application/javascript;

5. Analizar el uso de recursos de Nginx

Finalmente, si ha completado todas las optimizaciones anteriores pero Nginx aún consume mucha CPU, es posible que necesite utilizar algunas herramientas para un análisis en profundidad.

使用 tophtop Ver el consumo de recursos en tiempo real de un proceso.,por strace Rastree llamadas al sistema o use nmon Generar informes de desempeño. Solo analizando exhaustivamente el funcionamiento real de Nginx podremos realizar un ajuste más preciso.

总结

No entre en pánico cuando el uso de CPU de Nginx aumente. Puede que simplemente se deba a una configuración incorrecta o a un tráfico excesivo.

mediante ajustes razonables worker_processesworker_connectionsAl habilitar el almacenamiento en caché, optimizar los tiempos de espera y los descriptores de archivos, puede reducir significativamente la presión de carga en Nginx.

Nginx es un potente servidor web que, cuando se optimiza adecuadamente, puede proporcionar un rendimiento excelente para su sitio web.

Recuerde, cualquier duda puede ser respondida porCienciamétodos para solucionarlo, optimizar el rendimiento del servidor no es una excepción.

Monitorear y ajustar de manera oportuna, es la clave para mantener Nginx funcionando de manera eficiente. Si puede dominar estas técnicas, su sitio web estará seguro incluso frente a un alto tráfico o ataques maliciosos.

Espero que este artículo te haya inspirado, ¡date prisa y optimiza tu Nginx!

发表 评论

Su dirección de correo electrónico no será publicada. 项 已 用 * 标注

Ir al Inicio