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

IIS 7.0 Architecture

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.