Apache vs Nginx: ¿cuál es mejor?

Dificultad: Fácil
Tiempo de Lectura: 2 minutos

La necesidad de servir a gran número de peticiones concurrentes se está elevando cada día. Con el problema C10K (es decir, 10.000 clientes simultáneos) comenzó la investigación sobre la arquitectura de servidor web que podría resolver este problema. Como fue resultado fue desarrollada la arquitectura Nginx.

 

El aumento de la escalabilidad del servidor Web

 

El problema de escalabilidad del servidor web se puede resolver, ya sea mediante el aumento de las capacidades de hardware (memoria, CPU, etc) o mediante la mejora de la arquitectura de servidor web. El objetivo es mejorar la arquitectura del servidor web también optimizar los recursos de hardware, lo que finalmente conducirá a una arquitectura rentable.

Para resolver este problema, en 2002 Igor Sysoev comenzó a desarrollar un servidor web escrito en C, que tuvo una gestión eficiente con el uso de hilos.

Nginx fue muy diferente a la forma tradicional en la que los servidores web procesan una solicitud. En los modelos tradicionales basados ​​en los hilos, para cada cliente hay un hilo que es totalmente independiente y se dedica a servir a ese hilo. Esto puede hacer que existan problemas de  bloqueo cuando el proceso está a la espera para ser completado para liberar los recursos (memoria, CPU) en el disco duro. Además, la creación de procesos separados consume más recursos.

En Nginx, la solución para resolver el problema anterior es el uso por eventos, asíncrono, sin bloqueo y la arquitectura de un solo subproceso.

 

Nginx Vs Apache

 

Como se discutió anteriormente Nginx se basa en una arquitectura orientada a eventos. Apache se basa en una arquitectura basada en procesos.

Es interesante observar que Apache en su primera versión no estaba teniendo la arquitectura multitarea. Más tarde se añadió Apache MPM (módulo multi-procesamiento) para lograrlo.

Nginx no crea un nuevo proceso para una nueva solicitud. Apache crea un nuevo proceso para cada solicitud.

En Nginx, el consumo de memoria es muy bajo para servir páginas estáticas. Pero, la naturaleza de Apache de crear nuevos procesos para cada petición aumenta el consumo de memoria.

Varios resultados de evaluación comparativa indica que, en comparación con Apache, Nginx es extremadamente rápido para servir páginas estáticas.

Desarrollo Nginx no comenzó hasta 2002. Pero Apache versión inicial fue en 1995.

En la difícil situación configuraciones, en comparación con Nginx, Apache puede ser configurado fácilmente ya que viene con muchas características de configuración para cubrir toda la gama de requisitos.

Cuando se compara con Nginx, Apache tiene una excelente documentación.

En general, Nginx tiene menos componentes para agregar más características. Pero Apache tiene un montón de características y proporciona mucha más funcionalidad que Nginx.

Nginx no son compatibles con sistemas operativos como OpenVMS y IBMi. Pero Apache soporta mucho más amplia gama de sistemas operativos.

Nginx sólo viene con las características básicas que se requieren para un servidor web, es ligero en comparación a Apache.

El rendimiento y la escalabilidad de Nginx no es completamente dependiente de los recursos de hardware, mientras que el rendimiento y la escalabilidad de Apache depende de los recursos de hardware subyacentes como la memoria y la CPU.

Conclusión

Para nosotros la mejor opción sigue siendo Nginx por la razón de que consume menos recursos de hardware y con estáticos es muy veloz, si no lo has utilizado es hora de que lo empieces a probar.

¿Te resultó útil el artículo? Compártelo con tus colegas: