Comparación de Rendimiento de Apache vs Nginx
En este artículo, compararemos el rendimiento de Apache y Nginx, dos de los servidores web más populares utilizados en entornos de producción. Evaluaremos su rendimiento utilizando múltiples pruebas, incluyendo el servicio de contenido estático, proxy inverso y equilibrio de carga.
Diseño de la Prueba
Para esta evaluación, utilizaremos tres pruebas para evaluar el rendimiento de Apache y Nginx. La primera prueba evaluará el rendimiento de ambos servidores web al servir contenido estático sobre HTTP. La segunda prueba evaluará su rendimiento al servir contenido estático sobre HTTPS utilizando certificados TLS. La tercera prueba evaluará su rendimiento como proxies inversos y equilibradores de carga.
Visión General de la Implementación
Para cada prueba, desplegaremos tanto Apache como Nginx en máquinas virtuales (VM) dedicadas con configuraciones de hardware idénticas. Utilizaremos un cluster de Kubernetes para generar carga y simular tráfico a ambos servidores web. Recopilaremos métricas sobre el rendimiento de ambos servidores web, incluyendo latencia, throughput y uso de CPU.
1ª Prueba: Servicio de Contenido Estático sobre HTTP
En esta prueba, serviremos un sitio web estático generado con React, que se compila en archivos HTML, CSS y JavaScript. Utilizaremos el protocolo HTTP plano y habilitaremos la compresión en ambos servidores web. Generaremos carga utilizando un cluster de Kubernetes y mediremos la latencia y el throughput de ambos servidores web.
2ª Prueba: Servicio de Contenido Estático sobre HTTPS
En esta prueba, serviremos el mismo sitio web estático sobre HTTPS utilizando certificados TLS. Configuraremos una autoridad de certificación privada y emitiremos certificados a ambos servidores web. Habilitaremos el protocolo HTTP/2 y mediremos la latencia y el throughput de ambos servidores web.
3ª Prueba: Proxy Inverso y Equilibrio de Carga
En esta prueba, utilizaremos ambos servidores web como proxies inversos y equilibradores de carga. Desplegaremos dos réplicas de la aplicación detrás de cada proxy y utilizaremos round-robin para distribuir tráfico entre las aplicaciones. Mediremos la latencia y el throughput de ambos servidores web.
Resultados
Los resultados de las pruebas son los siguientes:
- En la 1ª prueba, Nginx supera a Apache, sirviendo más solicitudes por segundo y teniendo una latencia más baja.
- En la 2ª prueba, Apache supera a Nginx, sirviendo más solicitudes por segundo y teniendo una latencia más baja.
- En la 3ª prueba, Apache supera a Nginx, sirviendo más solicitudes por segundo y teniendo una latencia más baja.
Conclusión
En conclusión, el rendimiento de Apache y Nginx varía dependiendo del caso de uso específico. Nginx se desempeña mejor cuando se sirve contenido estático sobre HTTP, mientras que Apache se desempeña mejor cuando se sirve contenido estático sobre HTTPS y cuando se utiliza como proxy inverso y equilibrador de carga. Estos resultados son sorprendentes y merecen una investigación adicional.