Estoy tratando de entender qué hace que Nginx sea tan rápido, y tengo algunas preguntas.nginx: ¿Es multiproceso pero utiliza múltiples procesos?
Como lo entiendo, Apache o bien genera un nuevo proceso para servir a cada solicitud o genera un nuevo hilo para servir a cada petición. Dado que cada nuevo hilo comparte el espacio de direcciones virtuales, el uso de la memoria mantiene subidas si hay un número de solicitudes simultáneas entrantes.
Nginx resuelve esto teniendo solo un proceso de escucha (Maestro), con un solo hilo de ejecución Y 2 o 3 (número es configurable) procesos de trabajo. Este proceso/subproceso maestro está ejecutando un bucle de evento. Efectivamente esperando cualquier solicitud entrante. Cuando llega una solicitud, entrega esa solicitud a uno de los procesos de trabajo.
Por favor, corríjanme si mi entendimiento anterior no es correcta
Si lo anterior es correcto, entonces tengo algunas preguntas:
1.) ¿No es el proceso de trabajo que va a generar múltiples hilos y va a encontrarse con el mismo problema que apache?
2.) O es nginx rápido porque su arquitectura basada en eventos utiliza sin bloqueo-IO debajo de todo. Tal vez el proceso de trabajo engendra hilos que hacen solo sin bloqueo-IO, ¿o sí?
3.) ¿Qué "exactamente" es "arquitectura basada en eventos", puede alguien realmente simplificarlo, por soemone como yo de entender. ¿Sólo se refiere a no-bloqueo-io o algo más también?
Obtuve una referencia de c10k, estoy tratando de resolverlo, pero no creo que se trate de un evento basado en el arco. parece más para IO sin bloqueo.
IO no bloqueante requiere una arquitectura basada en eventos. –
FYI - En caso de que esté interesado en profundizar - He escrito un blog sobre la respuesta junto con otros materiales + videos aquí: http://planetunknown.blogspot.com/2011/02/why-nginx-is-faster- than-apache.html – PlanetUnknown