GNU/Linux >> Tutoriales Linux >  >> Linux

Ajuste del rendimiento de Nginx

Nginx es un servidor web gratuito de código abierto con alto rendimiento y bajo peso, que se utiliza como equilibrador de carga, proxy inverso, caché HTTP y proxy de correo. Aunque Nginx es bastante nuevo en comparación con otros servidores web, su popularidad está aumentando debido a su alto rendimiento. Con la configuración predeterminada de Nginx, puede obtener un rendimiento rápido, pero podemos aumentar el rendimiento de Nginx aún más cambiando algunas configuraciones.

En este artículo, aprenderá 8 formas diferentes de mejorar el rendimiento de Nginx. Para ilustrar el ejemplo de este artículo, instalé Nginx en el sistema Ubuntu 22.04 LTS.

Modificar procesos de trabajo

Todas las solicitudes del servidor web en Nginx son manejadas por un proceso de trabajo. En Nginx, los procesos de trabajo se crean como múltiples procesos de trabajo para manejar la solicitud y un proceso maestro es responsable de administrar todos los procesos de trabajo y analizar la configuración. En la configuración predeterminada de Nginx, el parámetro del proceso de trabajo se establece en automático, lo que inicia el proceso de trabajo según el núcleo de CPU disponible. Como se recomienda en los documentos oficiales de Nginx, es la mejor manera de mantener el proceso de trabajo de acuerdo con el núcleo de CPU disponible, por lo que el parámetro recomendado es automático. Si desea saber cuántos núcleos tienen sus procesadores, simplemente ejecute el siguiente comando.

$ grep processor /proc/cpuinfo | wc -l

Puede cambiar el valor predeterminado del proceso de trabajo desde el archivo de configuración de Nginx que se encuentra en /etc/nginx/nginx.conf. Si su servidor experimenta un mayor tráfico y necesita agregar más procesos de trabajo, es mejor actualizar el servidor a más procesadores centrales.

Mejora del límite de conexiones de los trabajadores

La conexión del trabajador es el número total de conexiones simultáneas que cada proceso de trabajo disponible puede administrar. De forma predeterminada, el proceso de trabajo puede administrar 512 conexiones a la vez. Antes de modificar el valor de la conexión del trabajador, debe verificar el sistema de conexión máxima para permitir usar el siguiente comando para actualizar la configuración de la conexión de acuerdo con él.

$ ulimit -n

Para mejorar Nginx a su máximo potencial, establezca el valor de conexión del trabajador en el sistema de conexión máximo permitido por el sistema en el archivo nginx.conf.

Implementación de la compresión de contenido

Para la compresión de contenido web, Nginx usa gzip para aumentar el tiempo de entrega del contenido y disminuir el uso del ancho de banda de la red. En la configuración, puede encontrar la configuración de gzip en el estado comentado, pero puede descomentar y modificar el gzip según sus necesidades. Como el proceso de compresión gzip usa los recursos del sistema, si tiene recursos limitados, modifique la configuración según esto, como comprimir solo un tipo específico de archivo, nivel de compresión, etc.

Almacenamiento en caché de contenido estático

En este desarrollo web moderno, la mayoría de los contenidos se envían de forma estática al navegador o al cliente, por lo que almacenar en caché los archivos estáticos cargará el contenido más rápido. También disminuirá la solicitud de conexión a Nginx a medida que los contenidos se carguen desde el caché. Para iniciar el proceso de almacenamiento en caché, agregue la siguiente directiva a su archivo de configuración de host virtual Nginx.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

La directiva anterior almacena en caché el archivo de recursos durante 30 días. Puede configurar la fecha de caducidad de la memoria caché según sus necesidades.

Búfer

El almacenamiento en búfer puede hacer que la comunicación entre el cliente y el servidor sea más eficiente, ya que retiene parte de la respuesta hasta que se llena el búfer. Si la respuesta es demasiado alta que el tamaño real del búfer, Nginx escribirá la respuesta en el disco, lo que puede provocar un problema de rendimiento. Puede actualizar la siguiente directiva para ajustar el tamaño del búfer de acuerdo con sus requisitos.

Client_body_buffer_size :determina el tamaño real del búfer que se utiliza para contener los datos de respuesta del cliente.

Client_header_buffer_size :Gestiona el tamaño de la cabecera del cliente. Normalmente, establecer el valor en 1k es lo suficientemente bueno.

Client_max_body_size :Limita la respuesta corporal máxima permitida al cliente. Si el tamaño del cuerpo supera su valor, Nginx arrojará el error "Entidad de solicitud demasiado grande".

Para ajustar el tamaño del almacenamiento en búfer, agregue la siguiente directiva dentro de la sección http.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Búfer de registro de acceso

El registro es una de las funciones fundamentales en la depuración del problema y la auditoría. Como el registro almacena todos los datos de solicitud que afectan tanto a los ciclos de E/S como a la CPU, lo que genera problemas de rendimiento. Puede reducir este tipo de impacto habilitando el almacenamiento en búfer en el registro. Una vez que el tamaño del búfer alcanza su límite, Nginx escribe el contenido del búfer en el registro. Puede habilitar el almacenamiento en búfer agregando parámetros de búfer con valores de tamaño a la directiva de registro de acceso.

access_log /var/log/nginx/access.log main buffer=16k;

O puede deshabilitar el registro de acceso (si no es necesario) de la siguiente manera.

access_log off;

Limitar los valores de tiempo de espera

Limitar el valor del tiempo de espera mejorará el rendimiento de Nginx. Nginx esperará la solicitud del cuerpo y el encabezado del cliente durante el período de tiempo determinado. Si no reciben los datos de respuesta a tiempo, Nginx activa un tiempo de espera para el cliente respectivo. El valor de tiempo de espera se puede administrar mediante la siguiente directiva. Para establecer la duración del tiempo de espera, copie y pegue la directiva que se proporciona a continuación dentro de la sección http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

El tiempo de espera del cuerpo y el encabezado del cliente es un período de tiempo en el que Nginx lee el encabezado y el cuerpo de la solicitud del cliente. Si no se completa a tiempo, la solicitud finaliza con un error de tiempo de espera. Keepalive_timeout es la duración después de que nginx cierra la conexión del cliente, la conexión de mantenimiento permanece abierta. Send_timeout es la duración durante la cual el cliente debe recibir la respuesta enviada por Nginx.

Abrir caché de archivos

En Linux, casi todo es un archivo, cuando se usa open_file_cache, el descriptor del archivo y todos los archivos a los que se accede con frecuencia se almacenan en caché en el servidor. Especialmente cuando se entregan archivos Html estáticos usando caché de archivo abierto, se mejorará el rendimiento de Nginx a medida que abre y almacena caché en la memoria durante un intervalo determinado. Coloque la siguiente directiva de open_file_cache en la sección http para iniciar el almacenamiento en caché.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Conclusión

Estas son ocho formas de aumentar el rendimiento de un servidor web Nginx mediante una simple modificación del archivo de configuración de Nginx. Espero que leer este artículo lo ayude a mejorar su configuración de Ngunx para obtener el mayor rendimiento posible en su servidor, servidor o sistema en la nube.


Linux
  1. MySQL:ajuste y optimización del rendimiento

  2. nginx - 413 Entidad de solicitud demasiado grande

  3. ¿Por qué el patrón Awk no coincide con los argumentos de configuración de Nginx -v?

  4. Instalar Nginx en Fedora

  5. Instalar Nginx en Ubuntu

Instale Nginx Amplify en CentOS 8/RHEL 8 para monitorear el rendimiento de LEMP

Cómo obtener el mejor rendimiento del servidor Nginx

Cómo arreglar las conexiones de los trabajadores no son suficientes errores en Nginx

¿Cómo ajustar NGINX para el próximo 2022?

Instalar Nginx en Ubuntu 18.04

Introducción a la supervisión y el ajuste del rendimiento de Linux