Recursos do WAS (Serviço de Ativação de Processos do Windows)

por Thomas Deml

O WAS (Serviço de Ativação de Processos do Windows) do IIS 7 é o principal componente que fornece recursos de modelo de processo e configuração para aplicativos Web e serviços Web. A principal tarefa do WAS é gerenciar pools de aplicativos. Os pools de aplicativos são contêineres de configuração que representam o ambiente de hospedagem para grupos de URLs.

Quando um cliente HTTP solicita uma URL HTTP.SYS mapeia a solicitação para uma fila de solicitações do pool de aplicativos. Um processo de trabalho para a fila de solicitações do pool de aplicativos é gerado pelo WAS e o processo de trabalho executa o código necessário para enviar uma resposta. Uma das principais tarefas do WAS é gerenciar os processos de trabalho gerados, ou seja, o WAS monitora sua integridade, recicla-os se necessário e garante que nenhum deles consuma mais recursos do que o especificado na configuração correspondente do AppPool. O WAS também é o árbitro e o coletor de dados de tempo de execução e de estado, por exemplo, contadores de desempenho, site e estado do pool de aplicativos.

Diagrama de arquitetura

IIS 7.0 Architecture

Recursos do modelo de processo

Dar suporte a 10 mil ou mais sites a serem hospedados no mesmo computador físico é um requisito fundamental para os ambientes de hospedagem em massa de hoje. O código em execução nesses sites geralmente não é bem testado, ou nem é testado. Para dar suporte a esses requisitos, o WAS precisa fornecer um modelo de processo avançado e um gerenciamento eficiente de recursos.

Gerenciamento eficiente de recursos

Ativação sob demanda

Recursos como RAM e CPU são escassos em cenários multilocatários. O WAS iniciará um processo de trabalho do IIS somente depois que as solicitações de um determinado site ou aplicativo Web chegarem.

Tempo limite de ociosidade

Como os recursos geralmente são escassos, o WAS pode desligar aplicativos Web com base em um tempo limite ocioso configurável.

Monitoramento de integridade

Para garantir a integridade deles o WAS monitora os processos de trabalho gerados. Mensagens de integridade são enviadas periodicamente para cada processo de trabalho em execução. Se o processo de trabalho não responder em um intervalo de tempo configurável, o processo de trabalho será reciclado ou encerrado. Dessa forma, os deadlocks não detectados nos processos de trabalho são corrigidos automaticamente ao reiniciar o processo de trabalho.

Limite de inicialização

Parte do recurso proteção contra falhas rápidas é o limite de inicialização. Se um processo de trabalho não responder ao WAS dentro de um limite de inicialização configurável, ele será encerrado e o contador de proteção contra falhas rápidas será incrementado. Os pools de aplicativos são interrompidos, ou seja, a reinicialização do processo de trabalho não será mais tentada, se o contador de proteção contra falhas rápidas atingir um limite de tempo configurável. Isso evita cenários em que os processos de trabalho travam ou falham durante a inicialização.

Limite de desligamento

Um processo de trabalho também precisa ser desligado em um limite configurável. Se o desligamento não acontecer nesse tempo, o processo de trabalho será encerrado pelo WAS. Isso impede o uso excessivo de recursos devido a processos travados na sua fase de desligamento. Configurações de desligamento adicionais permitem que um executável seja iniciado (por exemplo, um depurador) quando o desligamento não for realizado dentro do tempo alocado.

Afinidade de CPU

As configurações permitem que WAS inicie processos de trabalho que tenham afinidade com uma ou mais CPUs. Isso impede que os locatários interfiram uns com os outros se compartilharem o mesmo computador físico.

Perfil do Usuário

O WAS pode iniciar processos de trabalho com ou sem carregar o perfil do usuário.

Segurança

Identidade do pool de aplicativos

Os processos de trabalho do IIS podem ser executados como uma conta personalizada, uma conta interna (LocalService, LocalSystem, NetworkService) ou uma identidade do pool de aplicativos (padrão). O uso da identidade do pool de aplicativos é recomendado porque ele não exige o gerenciamento de senhas e as identidades do pool de aplicativos já respeitam o princípio de privilégio mínimo. Contas internas também não exigem gerenciamento de senhas. Se uma identidade de usuário personalizada for usada, a senha será criptografada automaticamente. As configurações podem ser replicadas para vários computadores compartilhando as chaves de criptografia de configuração entre computadores.

Recursos do objeto de trabalho

Os objetos de trabalho permitem que os administradores restrinjam processos de trabalho a um limite específico da CPU. Uma ação configurável será tomada se esse limite de CPU for excedido. Os objetos de trabalho também garantirão que os processos gerados pelo processo de trabalho sejam encerrados.

Isolamento e segurança de configuração

Antes do WAS iniciar um pool de aplicativos e seu processo de trabalho, ele gera um arquivo de configuração exclusivo para esse pool de aplicativos. Os pools de aplicativos também têm configurações para executar pools de aplicativos em identidades exclusivas. No entanto, o isolamento pode ser alcançado mesmo se a mesma identidade for usada. O WAS cria um SID (identificador de segurança) exclusivo para cada pool de aplicativos. O arquivo de configuração do pool de aplicativos é protegido com esse SID exclusivo. Isso garante que os arquivos de configuração do pool de aplicativos só possam ser lidos pelos Administradores e pelo próprio pool de aplicativos. Até mesmo permissões de arquivo podem ser configuradas usando esse SID exclusivo.

Diagnóstico e monitoramento

Log de eventos

Eventos relativos a configuração inválida, reciclagem, inicialização ou desligamento dos processos de trabalho são relatados ao System Eventlog.

Solicitações em execução

O WAS expõe uma interface de controle de estado e tempo de execução que permite que scripts e ferramentas consultem as solicitações em execução de um determinado processo de trabalho. Isso é útil para localizar solicitações que travam ou solicitações que levam muito tempo para serem concluídas.

Contadores de desempenho

Todos os contadores de desempenho do IIS são canalizados por meio do WAS. O WAS reúne esses contadores de desempenho porque os contadores do IIS são baseados em site e os aplicativos Web podem residir em diferentes pools de aplicativos.

Reciclagem

A reciclagem permite a atualização de processos de trabalho sem perder uma única solicitação devido ao tempo de inatividade. Isso é feito por meio de um recurso chamado "reciclagem sobreposta".

Reciclagem sobreposta

O WAS faz isso gerando um novo processo de trabalho paralelo ao antigo que ainda está lidando com solicitações. Depois que o novo processo de trabalho é iniciado, ele começa a receber solicitações da fila de solicitações enquanto o processo de trabalho antigo é instruído pelo WAS a parar de receber solicitações. Depois que o processo de trabalho antigo conclui todas as solicitações de execução, ele é desligado. Esse recurso é chamado de "reciclagem sobreposta". Dessa forma, nenhuma solicitação é perdida durante um ciclo.

Configuração de reciclagem

Os parâmetros da reciclagem são configuráveis no sistema de configuração do IIS.

Reciclagem agendada

Os clientes podem querer reciclar seus aplicativos com base em um agendamento regular. Por meio das configurações, a reciclagem pode ser agendada periodicamente, por exemplo, a cada 4 horas, todos os dias à 1h etc.

Reciclagem com base no consumo de memória

Os aplicativos podem vazar memória ao longo do tempo. O WAS pode monitorar o consumo de memória de cada processo de trabalho para garantir que nenhum processo de trabalho use mais do que seu limite pré-configurado. Atingir um limite de memória virtual ou privada configurado disparará a reciclagem de um processo de trabalho.

Reciclagem com base no número de solicitações

A reciclagem também pode ser configurada com base no número de solicitações que um determinado processo de trabalho trata.

Reciclagem personalizada

É possível usar um código para personalizar estatísticas de integridade e disparar uma reciclagem por meio de uma chamada de API para a API de estado e tempo de execução do WAS.

Tornar um processo órfão

Alguns erros ocorrem apenas em um ambiente de produção. A eliminação de processos de trabalho garante o tempo de atividade, mas a solução de problemas desses erros torna-se difícil, por exemplo, se o processo de trabalho com falha precisar ser depurado. O recurso de tornar um processo órfão no WAS permite que os processos de trabalho sejam reciclados sem encerrar o processo de trabalho com falha. Agora, um depurador pode ser anexado a ele. Há outras configurações de processos órfãos que permitem a execução de um processo (por exemplo, um depurador) se ele se tornar órfão.

Gerenciamento de estado do pool de aplicativos

Os pools de aplicativos podem ser interrompidos, reciclados ou iniciados por meio de API disponível publicamente; por exemplo, se um aplicativo precisar ser colocado offline ou se a reciclagem precisar ser feita com base em parâmetros diferentes do que é configurável no arquivo applicationhost.config.

Recursos adicionais do WAS

Recursos de balanceador de carga

O HTTP.SYS ainda escuta na rede e retornará uma mensagem de erro HTTP 500 se as solicitações não forem captadas por um pool de aplicativos. Isso é um problema porque para Balanceadores de Carga de Nível 5 (TCP/IP), um erro HTTP 500 parece uma conexão TCP/IP válida. Uma configuração do WAS é capaz de permitir que o HTTP.SYS rejeite conexões em vez de enviar respostas HTTP.

O WAS pode ser configurado para iniciar processos de trabalho com as seguintes configurações:

Suporte a WoW64

O WAS pode iniciar processos de trabalho de 32 bits ou 64 bits.

Pré-carregamento do .NET Framework

O WAS pode ser configurado para pré-carregar uma versão específica do .NET Framework. Isso pode facilitar muito a solução de problemas de conflitos de versão.

Web Gardens

Um Web Garden é o termo para um pool de aplicativos que é executado com vários processos de trabalho. As solicitações são distribuídas entre essas instâncias de processo de trabalho usando um mecanismo round-robin.

Suporte a vários protocolos do WAS

WAS não hospeda apenas a pilha HTTP. Ele também pode hospedar outros protocolos por meio do Adaptador de Escuta e do Framework de Processo de Trabalho. Os serviços WCF aproveitam o suporte multiprotocolo do WAS. Os protocolos do WCF vêm com seus próprios Ouvintes (por exemplo, o NET.TCP, NET.MSMQ ou NET.PIPE). Esses ouvintes se conectam ao WAS usando as interfaces do adaptador de escuta que o WAS fornece.

Os protocolos de aplicativo que aproveitam essa infraestrutura podem hospedar código de aplicativo personalizado no mesmo Domínio de aplicativo do .NET que aplicativos ASP.NET regulares. Eles também podem aproveitar os serviços independentes de protocolo que o ambiente de hospedagem do ASP.NET fornece, por exemplo, compilação sob demanda, suporte à configuração etc.