Pregunta

Actualmente estoy leyendo mucho sobre Node.js. Hay una comparación frecuente entre los servidores que usan un hilo tradicional por modelo de solicitud (Apache) y servidores que usan un bucle de eventos (Nginx, nodo, tornado).

Me gustaría aprender en detalle sobre cómo se procesa una solicitud en ASP.NET, desde el punto que se recibe en http.sys hasta que se procesa en ASP.NET. He encontrado la documentación de MSDN en http.sys y IIS un poco de falta, pero tal vez mi Google-Fu es débil hoy. Hasta ahora, el mejor recurso que he encontrado es una publicación Blog de Thomas Marquardt.

¿Alguien podría arrojar más luz sobre el tema o señalarme otros recursos?

(Para los propósitos de esta pregunta, solo estoy interesado en IIS7 con una tubería integrada típica)

¿Fue útil?

Solución

Desde mi investigación hasta ahora, tengo entendido que cuando entra una solicitud se pone en una cola de solicitud de modo kernel. De acuerdo a este, esto evita muchos de los problemas con el cambio de contexto cuando hay grandes cantidades de solicitudes (o procesos o hilos ...), proporcionando beneficios similares a IO eventitado. Citado del artículo:

"Cada cola de solicitud corresponde a un grupo de aplicaciones. Un grupo de aplicaciones corresponde a una cola de solicitud dentro de http.sys y uno o más procesos de trabajadores".

Entonces, según eso, cada cola de solicitudes puede tener más de una "Proceso de trabajadores. "(Google Cache) Más sobre procesos de trabajadores

De mi entendimiento:

  • IIS abre crea una cola de solicitud (ver la API http.sys a continuación)
  • Un "sitio web" configurado en IIS corresponde al proceso de un trabajador
  • Un sitio web/proceso de trabajadores Comparte la piscina de hilo.
  • Se entrega un hilo una solicitud de la cola de solicitud.

Aquí hay mucha información buena sobre Arquitectura de IIS7

Aquí hay más información sobre http.sys.

Preguntas abiertas que todavía tengo:

  • ¿Cómo diablos cambia IIS el encabezado del servidor si usa http.sys? (Ver esta pregunta)

Nota: No estoy seguro de si/cómo una "cola de solicitud de modo de kernel" corresponde a un Puerto de finalización de IO, Asumiría que cada solicitud tendría la suya, pero no lo sé, por lo que realmente espero que alguien responda esto más a fondo. Solo me topé esta pregunta Y parece que http.sys usa de hecho los puertos de finalización de IO, que deberían proporcionar casi todos los mismos beneficios que eventan IO (node.js, nginx, lightpd, c10k, etc ...) tienen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top