Generalidades
Con los años, se ha escrito una gran cantidad de servidores web.
Apache, siendo uno de los más antiguos, es el más utilizado hoy en día. Sin embargo, se implementó con un mecanismo de escala que puede ser relativamente ineficiente en algunos aspectos. Algunos servidores web más nuevos han aparecido en los últimos años que intentan abordar algunas de las deficiencias de Apache. Uno de los más destacados es Nginx.
Tanto Apache como Nginx están disponibles preconfigurados en las plataformas de Alojamiento VPS y Dedicado. El alojamiento compartido regular usa Apache (principalmente debido a su soporte de características más amplio).
Este artículo examina el rendimiento relativo de cada servidor web para ver cómo se comparan cara a cara. Ten en cuenta que esto no pretende ser una comparación exhaustiva del rendimiento general. La esperanza es simplemente dar una comparación de rendimiento relativo en condiciones comunes.
Método de prueba
- El método para probar estos servidores web usa ApacheBench (una herramienta de evaluación comparativa del servidor HTTP).
- En cada prueba, se realizan 25,000 solicitudes de un archivo PNG de 5k localmente desde un VPS para eliminar las condiciones de red potencialmente variables de la ecuación.
- Antes de cada prueba, el servidor web en cuestión se reiniciaba para eliminar cualquier posible almacenamiento en caché u otros problemas que pudieran interferir con los resultados.
- Cada prueba se ejecutó con diferentes números de solicitudes concurrentes para medir el rendimiento en diferentes niveles de uso. (Ten en cuenta que es muy común que los navegadores permitan hasta 6 conexiones simultáneas por usuario individual que tengas navegando en un sitio. Por lo tanto, 10 usuarios navegando en tu sitio al mismo tiempo equivaldrían a aproximadamente 60 conexiones concurrentes).
Los comandos que se usan en esta prueba siguen este formato:
[server]$ ab -n 25000 -c 50 https://www.example.com/dreamhost_logo.png
donde la bandera -c aumentó con el nivel de concurrencia.
Uso de memoria
Esto es importante para medir, especialmente en un VPS donde su uso de memoria tiene un límite máximo y aumentarlo te cuesta dinero adicional. (Ten en cuenta que la memoria está en megabytes).
Como puedes ver, Nginx sale como líder claro en esta prueba. De hecho, la diferencia es TAN dramática que es casi un poco increíble. ¿Cómo puede existir una discrepancia tan grande?
Tiene que ver con cómo Apache maneja la escala con más solicitudes entrantes. Para manejar solicitudes adicionales, genera nuevos procesos. A medida que entran más y más conexiones, se generan más y más procesos de Apache para manejarlas. Esto hace que el uso de memoria crezca bastante rápido.
En comparación, verás que Nginx tiene un uso de memoria bastante estático y se mantiene bastante estático en todos los ámbitos de principio a fin.
Solicitudes por segundo
Esto es esencialmente una medida de qué tan rápido el servidor puede recibir y atender solicitudes en diferentes niveles de concurrencia. Cuantas más solicitudes puedan manejar por segundo, más capaz será el servidor de manejar grandes cantidades de tráfico. Así es como se comparan los servidores en este campo:
Nginx domina claramente en la cantidad bruta de solicitudes por segundo que puede atender. En niveles más altos de concurrencia, puede manejar menos solicitudes por segundo, pero aún más que Apache.
Recuerda, los resultados mostrados son buenos solo para medir el rendimiento relativo (y no absoluto), ya que las pruebas se realizaron localmente en el servidor.
Consideración
Recuerda, Apache admite una caja de herramientas más grande de cosas que puede hacer de inmediato y es probablemente el más compatible en todos los software web que existen en la actualidad. Además, la mayoría de los sitios web realmente no obtienen tantos éxitos simultáneos como para obtener grandes beneficios de rendimiento/memoria de Nginx, pero puedes verificarlo para ver si funciona mejor para tus necesidades.