El ajuste de rendimiento en NGINX es crucial para asegurar que tu servidor web o proxy inverso funcione de manera eficiente y pueda manejar grandes volúmenes de tráfico sin problemas. En esta sección, aprenderemos cómo optimizar NGINX para mejorar su rendimiento.

Conceptos Clave

  1. Parámetros de Configuración: Ajustes específicos en el archivo de configuración de NGINX que pueden mejorar el rendimiento.
  2. Caching: Almacenamiento en caché de contenido para reducir la carga en el servidor.
  3. Compresión: Uso de compresión para reducir el tamaño de las respuestas HTTP.
  4. Conexiones y Procesos: Configuración de la cantidad de conexiones y procesos que NGINX puede manejar.
  5. Optimización del Sistema Operativo: Ajustes en el sistema operativo que pueden mejorar el rendimiento de NGINX.

Parámetros de Configuración

worker_processes

El parámetro worker_processes define el número de procesos de trabajo que NGINX debe usar. Generalmente, se recomienda configurarlo al número de núcleos de CPU disponibles.

worker_processes auto;

worker_connections

El parámetro worker_connections define el número máximo de conexiones que cada proceso de trabajo puede manejar simultáneamente.

events {
    worker_connections 1024;
}

keepalive_timeout

El parámetro keepalive_timeout define el tiempo que NGINX mantendrá una conexión abierta después de enviar una respuesta.

keepalive_timeout 65;

sendfile

El parámetro sendfile permite a NGINX usar la función sendfile del sistema operativo para enviar archivos, lo que puede mejorar el rendimiento.

sendfile on;

tcp_nopush y tcp_nodelay

Estos parámetros optimizan la forma en que NGINX envía datos a través de la red.

tcp_nopush on;
tcp_nodelay on;

Caching

El almacenamiento en caché puede reducir significativamente la carga en el servidor. NGINX permite configurar el almacenamiento en caché de contenido estático y dinámico.

Configuración de Caché de Contenido Estático

location /static/ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Configuración de Caché de Proxy

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}

Compresión

La compresión de respuestas HTTP puede reducir el tamaño de los datos enviados al cliente, mejorando así el rendimiento.

Configuración de Compresión gzip

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_min_length 1000;

Conexiones y Procesos

Aumentar el Límite de Conexiones

Asegúrate de que el sistema operativo permita un número suficiente de conexiones.

ulimit -n 65536

Configuración de worker_rlimit_nofile

worker_rlimit_nofile 65536;

Optimización del Sistema Operativo

Ajustes de Kernel

Ajusta los parámetros del kernel para mejorar el rendimiento de la red.

sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

Configuración de Swappiness

Reduce el uso de swap para mejorar el rendimiento.

sysctl -w vm.swappiness=10

Ejercicio Práctico

Ejercicio 1: Optimización Básica

  1. Objetivo: Configurar NGINX para manejar un alto volumen de tráfico.
  2. Instrucciones:
    • Ajusta worker_processes y worker_connections en tu archivo de configuración de NGINX.
    • Habilita sendfile, tcp_nopush, y tcp_nodelay.
    • Configura la compresión gzip.
    • Aumenta el límite de conexiones en el sistema operativo.

Solución

worker_processes auto;

events {
    worker_connections 1024;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_proxied any;
    gzip_min_length 1000;

    server {
        listen 80;
        server_name example.com;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}

Conclusión

En esta sección, hemos cubierto varios aspectos del ajuste de rendimiento en NGINX, desde la configuración de parámetros básicos hasta la optimización del sistema operativo. Estos ajustes pueden ayudar a mejorar significativamente el rendimiento de tu servidor NGINX, permitiéndole manejar un mayor volumen de tráfico de manera eficiente. En la próxima sección, exploraremos técnicas avanzadas de monitoreo y solución de problemas para mantener tu servidor NGINX funcionando sin problemas.

© Copyright 2024. Todos los derechos reservados