Servidores y VPS

Tuning de Apache y Nginx en VPS: Ajustes para mayor velocidad

Aprende los ajustes esenciales de tuning para Apache y Nginx en un VPS que reducen la latencia y multiplican el rendimiento de tu servidor web.

Networking equipment with connected cables, showcasing modern technology infrastructure.

El tuning de Apache y Nginx en un VPS consiste en ajustar los parámetros del servidor web para sacar el máximo provecho de la RAM, CPU y conexiones disponibles. Sin estos ajustes, incluso un VPS de gama alta puede comportarse de forma lenta o inestable bajo carga.

Esta guía cubre los cambios más impactantes que puedes hacer hoy, sin necesidad de hardware adicional.

Por qué el tuning importa en un VPS

A diferencia de un servidor dedicado con recursos ilimitados, un VPS tiene RAM y CPU acotadas. Los valores predeterminados de Apache y Nginx están pensados para funcionar en cualquier entorno, no para rendir al máximo en el tuyo.

Un servidor sin tuning suele presentar:

  • Tiempos de respuesta elevados bajo tráfico moderado.
  • Procesos hijo que consumen RAM innecesariamente.
  • Conexiones que se cierran antes de que el cliente reciba todos los datos.
  • Sin caché de archivos estáticos, lo que obliga a leer disco en cada petición.

Consulta la guía de servidores VPS para entender primero qué recursos tiene disponible tu instancia antes de ajustar cualquier parámetro.

Tuning de Apache: los ajustes clave

Apache utiliza el módulo MPM (Multi-Processing Module) para gestionar conexiones. El MPM más común en VPS Linux es event o worker; evita prefork si usas PHP-FPM.

Configuración del MPM Event

Edita /etc/httpd/conf.modules.d/00-mpm.conf (CentOS/RHEL) o /etc/apache2/mods-enabled/mpm_event.conf (Debian/Ubuntu):

<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestWorkers   150
    MaxConnectionsPerChild 1000
</IfModule>

Regla práctica: MaxRequestWorkers no debe exceder (RAM disponible en MB) / (RAM media por proceso). Para un VPS de 2 GB con procesos de ~20 MB, el techo razonable es 80-100.

Keep-Alive y timeouts

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Un KeepAliveTimeout alto mantiene sockets abiertos sin motivo. Con 5 segundos es suficiente para la mayoría de los sitios.

Compresión y caché de archivos estáticos

# mod_deflate — habilita compresión gzip
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

# mod_expires — cabeceras de caché
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType text/css  "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

Tuning de Nginx: los ajustes clave

Nginx es asíncrono y orientado a eventos, lo que lo hace naturalmente más eficiente en conexiones concurrentes. Aun así, los valores por defecto dejan rendimiento sobre la mesa.

Worker processes y conexiones

worker_processes auto;          # uno por núcleo de CPU
worker_connections 1024;        # conexiones por worker

events {
    use epoll;
    multi_accept on;
}

worker_processes auto detecta los núcleos disponibles. multi_accept on permite que cada worker acepte varias conexiones en un solo ciclo.

Buffers y timeouts HTTP

http {
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    keepalive_timeout  15;
    keepalive_requests 100;

    client_body_buffer_size    128k;
    client_max_body_size       10m;
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    output_buffers   1 32k;
    postpone_output  1460;
}

Ajusta client_max_body_size según si tu sitio acepta subidas de archivos.

Caché de archivos abiertos

open_file_cache max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses  2;
open_file_cache_errors   on;

Esta directiva reduce las llamadas al sistema de archivos al mantener en memoria los descriptores de los archivos más accedidos.

Gzip en Nginx

gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

gzip_comp_level 4 ofrece una buena relación entre compresión y uso de CPU. Niveles más altos apenas reducen el tamaño pero consumen más procesador.

Comparativa rápida: valores por defecto vs. ajustados

Parámetro Apache (defecto) Apache (tuning VPS 2 GB) Nginx (defecto) Nginx (tuning VPS 2 GB)
Procesos/workers MaxClients 150 MaxRequestWorkers 80 worker_processes 1 worker_processes auto
KeepAlive timeout 15 s 5 s 75 s 15 s
Gzip Desactivado Activado Desactivado Activado, nivel 4
Caché de archivos No mod_expires No open_file_cache

Conclusiones clave

  • Ajusta MaxRequestWorkers (Apache) o worker_connections (Nginx) según la RAM real de tu VPS.
  • Reduce el KeepAliveTimeout a 5-15 segundos para liberar sockets más rápido.
  • Activa gzip con nivel de compresión 4; reduce el tráfico transferido hasta un 70 % en HTML/CSS/JS.
  • Usa mod_expires en Apache u open_file_cache en Nginx para aliviar el disco en archivos estáticos.
  • Monitorea el consumo de RAM y CPU tras cada cambio; no apliques valores de servidores con 16 GB a un VPS de 1 GB.

¿Quieres ayuda para afinar la configuración de tu servidor o evaluar si tu VPS actual soporta tu tráfico? Consulta a los especialistas de elenlace.com y obtén una revisión gratuita de tu infraestructura.

Preguntas frecuentes

¿Apache o Nginx: cuál es más rápido en un VPS?

Nginx es más eficiente en conexiones concurrentes y consumo de RAM gracias a su arquitectura asíncrona. Sin embargo, Apache con MPM Event y PHP-FPM se acerca mucho. La diferencia práctica depende más del tuning que del servidor elegido.

¿Con qué frecuencia debo revisar estos ajustes?

Revísalos cada vez que cambies el plan de VPS, lances un nuevo sitio de alto tráfico o detectes picos de latencia. Un repaso trimestral es una buena práctica de mantenimiento.

¿Puedo aplicar estos cambios en producción sin reiniciar el servidor?

Sí, tanto Apache (apachectl graceful) como Nginx (nginx -s reload) recargan la configuración sin interrumpir las conexiones activas. Prueba siempre la sintaxis antes: apachectl configtest o nginx -t.

¿El tuning sustituye a una CDN?

No, son complementarios. El tuning optimiza el servidor de origen; una CDN descarga tráfico de archivos estáticos hacia edge nodes cercanos al usuario. Lo ideal es aplicar ambos.

¿Prefieres que lo hagamos por ti? En El Enlace resolvemos hosting y desarrollo web profesional.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos