Características del Servicio de activación de proceso de Windows (WAS)
de Thomas Deml
El Servicio de activación de proceso de Windows (WAS) de IIS 7 es el componente clave que proporciona características de configuración y del modelo de proceso para aplicaciones y servicios web. La tarea principal de WAS es administrar grupos de aplicaciones. Los grupos de aplicaciones son contenedores de configuración que representan el entorno de hospedaje para grupos de direcciones URL.
Cuando un cliente HTTP solicita una dirección URL, HTTP.SYS asigna la solicitud a una cola de solicitudes del grupo de aplicaciones. WAS genera un proceso de trabajo para la cola de solicitudes del grupo de aplicaciones y el proceso de trabajo ejecuta el código necesario para enviar una respuesta. Una de las principales tareas de WAS es administrar los procesos de trabajo generados, es decir, WAS supervisa su estado, los recicla si es necesario y garantiza que ninguno de ellos consuma más recursos de los especificados en la configuración de AppPool correspondiente. WAS también es el árbitro y el recopilador de datos de estado y en tiempo de ejecución, p. ej., contadores de rendimiento, sitio y estado del grupo de aplicaciones.
Diagrama de la arquitectura
Características del modelo de proceso
Admitir el hospedaje de 10 000 sitios web o más en la misma máquina física es un requisito básico para los entornos de hospedaje masivo actuales. Normalmente, el código que se ejecuta en estos sitios web no está bien probado, si es que se prueba. Para admitir estos requisitos, WAS debe proporcionar un modelo de proceso y una administración de recursos eficaces.
Administración de recursos eficaz
Activación a petición
Recursos tales como RAM y CPU escasean en los escenarios de varios inquilinos. WAS iniciará un proceso de trabajo de IIS solo una vez que lleguen las solicitudes de un sitio o una aplicación web determinados.
Tiempo de espera de inactividad
Como los recursos suelen ser escasos, WAS puede cerrar aplicaciones web en función de un tiempo de espera de inactividad configurable.
Supervisión del estado
Para garantizar su mantenimiento, WAS supervisa los procesos de trabajo generados. Los mensajes de mantenimiento se envían periódicamente a cada proceso de trabajo en ejecución. Si el proceso de trabajo no responde en un intervalo de tiempo configurable, se reciclará o eliminará. De este modo, los interbloqueos no detectados en los procesos de trabajo se corrigen automáticamente mediante el reinicio del proceso de trabajo.
Límite de inicio
Parte de la característica de protección rápida contra errores es el límite de inicio. Si un proceso de trabajo no informa a WAS dentro del límite de inicio configurable, se eliminará y se incrementará el contador de protección rápida contra errores. Los grupos de aplicaciones se detienen, es decir, ya no se intentará reiniciar el proceso de trabajo, si el contador de protección rápida contra errores alcanza un límite configurable dentro de un límite de tiempo configurable. Esto impide que se produzcan escenarios donde los procesos de trabajo se bloquean durante el inicio.
Límite de cierre
Un proceso de trabajo también tiene que cerrarse en un límite configurable. Si el cierre no se produce en este momento, WAS elimina el proceso de trabajo. Esto evita el uso excesivo de recursos debido al bloqueo de procesos en su fase de apagado. La configuración de cierre adicional permite iniciar un archivo ejecutable (p. ej., un depurador) cuando el cierre no se completa dentro del tiempo asignado.
Afinidad de CPU
Las opciones de configuración permiten a WAS iniciar procesos de trabajo que tienen afinidad con una o varias CPU. Esto impide que los inquilinos interfieran entre sí comparten la misma máquina física.
Perfil de usuario
WAS puede iniciar procesos de trabajo con la carga del perfil de usuario o sin dicha carga.
Seguridad
Identidad del grupo de aplicaciones
Los procesos de trabajo de IIS se pueden ejecutar como una cuenta personalizada, una cuenta integrada (LocalService, LocalSystem, NetworkService) o una identidad del grupo de aplicaciones (valor predeterminado). Se recomienda usar la identidad del grupo de aplicaciones porque no requiere administración de contraseñas y las identidades del grupo de aplicaciones ya acatan el principio de privilegios mínimos. Las cuentas integradas tampoco requieren administración de contraseñas. Si se usa una identidad de usuario personalizada, la contraseña se cifra automáticamente. Las opciones de configuración se pueden replicar en varias máquinas mediante el uso compartido de las claves de cifrado de configuración entre máquinas.
Características del objeto de trabajo
Los objetos de trabajo permiten a los administradores restringir los procesos de trabajo a un límite de CPU determinado. Se realiza una acción configurable si se supera este límite de CPU. Los objetos de trabajo también se asegurarán de la finalización de los procesos generados por el proceso de trabajo.
Aislamiento y seguridad de configuración
Antes de que WAS inicie un grupo de aplicaciones y su proceso de trabajo, genera un archivo de configuración único para este grupo de aplicaciones. Los grupos de aplicaciones también tienen opciones de configuración para ejecutar grupos de aplicaciones con identidades únicas. Sin embargo, se puede lograr el aislamiento incluso si se usa la misma identidad. WAS crea un identificador de seguridad (SID) único para cada grupo de aplicaciones. A continuación, el archivo de configuración del grupo de aplicaciones se protege con este SID único. Esto garantiza que los administradores y el propio grupo de aplicaciones solo puedan leer los archivos de configuración del grupo de aplicaciones. Incluso los permiso de archivo se pueden configurar mediante este SID único.
Diagnóstico y supervisión
Registro de eventos
Los eventos relacionados con la configuración, el reciclaje, el inicio o el cierre no válidos de los procesos de trabajo se notifican al registro de eventos del sistema.
Solicitudes actualmente en ejecución
WAS expone una interfaz de control de estado y en tiempo de ejecución que permite tanto a scripts como herramientas consultar las solicitudes actualmente en ejecución de un proceso de trabajo determinado. Esto resulta útil para buscar solicitudes que se bloquean o que tardan mucho tiempo en completarse.
Contadores de rendimiento
Todos los contadores de rendimiento de IIS se canalizan mediante WAS. WAS recopila estos contadores de rendimiento porque los contadores de IIS están basados en sitios y las aplicaciones web pueden residir en diferentes grupos de aplicaciones.
Reciclaje
El reciclaje permite actualizar los procesos de trabajo sin perder una sola solicitud debido al tiempo de inactividad. Esto se hace a través de una característica denominada "reciclaje superpuesto".
Reciclaje superpuesto
WAS lo hace mediante la generación de un nuevo proceso de trabajo paralelo al anterior que sigue administrando las solicitudes. Una vez que el nuevo proceso de trabajo esté en marcha, empezará a tomar las solicitudes de la cola de solicitudes mientras WAS indica al proceso de trabajo anterior que deje de tomar las solicitudes. Una vez que el proceso de trabajo anterior finalice todas las solicitudes en ejecución, se cerrará. Esta característica se denomina "reciclaje superpuesto". Garantiza que no se pierda ninguna solicitud durante un reciclaje.
Configuración de reciclaje
Los parámetros de reciclaje se pueden configurar en el sistema de configuración de IIS.
Reciclaje programado
Es posible que los clientes quieran reciclar sus aplicaciones según una programación periódica. A través de las opciones de configuración, el reciclaje se puede programar periódicamente, p. ej. cada 4 horas, todos los días a la 1:00 h, etc.
Reciclaje basado en el consumo de memoria
Las aplicaciones podrían perder memoria con el tiempo. WAS puede supervisar el consumo de memoria de cada proceso de trabajo para asegurarse de que ningún proceso de trabajo usa una cantidad superior a su límite preconfigurado. Alcanzar un umbral de memoria privada o virtual configurado desencadenará el reciclaje de un proceso de trabajo.
Reciclaje basado en el número de solicitudes
El reciclaje también se puede configurar en función del número de solicitudes administradas por un proceso de trabajo determinado.
Reciclaje personalizado
El código personalizado puede personalizar estadísticas de mantenimiento y desencadenar un reciclaje a través de una llamada API a las API de estado y en tiempo de ejecución de WAS.
Procesos huérfanos
Algunos errores solo se producen en un entorno de producción. La eliminación de procesos de trabajo garantiza el tiempo de actividad, pero la solución de estos errores se vuelve difícil, p. ej., si el proceso de trabajo que ha registrado errores debe depurarse. La característica de procesos huérfanos de WAS permite el reciclaje de los procesos de trabajo sin eliminar el proceso de trabajo con errores. Ahora se puede asociar un depurador a este. La configuración de procesos huérfanos adicional permite la ejecución de un proceso (p. ej., un depurador) si se produce la creación de huérfanos.
Administración de estados del grupo de aplicaciones
Los grupos de aplicaciones se pueden detener, reciclar o iniciar a través de API con disponibilidad pública, p. ej, si una aplicación debe desconectarse o si el reciclaje debe realizarse en función de parámetros distintos de lo que se puede configurar en el archivo applicationhost.config.
Características de WAS adicionales
Características del equilibrador de carga
HTTP.SYS sigue escuchando en la red y devolverá un mensaje de error HTTP 500 si un grupo de aplicaciones no toma las solicitudes. Esto es un problema porque, para un equilibrador de carga de nivel 5 (TCP/IP), un error HTTP 500 es similar a una conexión TCP/IP válida. Una opción de configuración de WAS puede habilitar HTTP.SYS para rechazar conexiones en lugar de enviar respuestas HTTP.
WAS se puede configurar para iniciar procesos de trabajo con las siguientes opciones:
Compatibilidad con WoW64
WAS puede iniciar procesos de trabajo de 32 o 64 bits.
Precarga de .NET Framework
WAS se puede configurar para cargar previamente una versión determinada de .NET Framework. Esto puede facilitar mucho la solución de conflictos de versión.
Jardines de servidores web
Un jardín de servidores web es el término para un grupo de aplicaciones que se ejecuta con varios procesos de trabajo. Las solicitudes se distribuyen entre estas instancias de proceso de trabajo mediante un mecanismo round robin.
Compatibilidad con varios protocolos de WAS
WAS no solo hospeda la pila HTTP. También puede hospedar otros protocolos a través de su marco de proceso de trabajo y adaptador de escucha. Los servicios WCF aprovechan la compatibilidad con varios protocolos de WAS. Los protocolos WCF vienen con sus propios clientes de escucha (p. ej., el cliente de escucha NET.TCP, NET.MSMQ o NET.PIPE). Estos clientes de escucha se conectan a WAS mediante las interfaces de adaptador de escucha proporcionadas por WAS.
Los protocolos de aplicación que aprovechan esta infraestructura pueden hospedar código de aplicación personalizado en el mismo dominio de aplicación de .NET que las aplicaciones de ASP.NET normales. También pueden aprovechar los servicios independientes del protocolo que proporciona el entorno de hospedaje de ASP.NET, por ejemplo, la compilación a petición, la compatibilidad de configuración, etc.