Limites de CPU para pools de aplicativos no IIS 7.5

7

Vejo que, no iis 7.5, posso definir um limite de utilização% da CPU para um período de tempo especificado para um pool de aplicativos. Eu também posso ter matado o processo de trabalho se este limite for violado. Se for solicitado, o processo de trabalho será reiniciado automaticamente depois de ser eliminado ou a intervenção manual será necessária?

Over no Stack Overflow há a menção de que ele pode ser reiniciado na conclusão do intervalo ...

    
por Kyle Brandt 30.07.2010 / 15:45

2 respostas

4

Isso parece um daqueles casos em que a simulação (ou o acesso ao código-fonte ... > sigh <) provavelmente será a única maneira de ver qual é o comportamento com qualquer grau de confiança.

A documentação para a entrada de log de eventos para reciclagem de cota de CPU fala sobre a reciclagem da seguinte forma:

By default, application pool recycling is overlapped, which means that the worker process that is to be shut down is kept running until after a new worker process is started. After a new worker process starts, new requests are passed to it. The old worker process shuts down after it finishes processing its existing requests, or after a configured time-out, whichever comes first. This way of recycling ensures uninterrupted service to clients. However, if an application in the application pool cannot run more than one instance of itself at a time, overlapping rotation can be disabled.

Parece-me que, por definição, encerrar um processo de trabalho devido ao consumo excessivo de CPU significaria que solicitações pendentes não poderiam ser concluídas (já que estão esgotando a cota de CPU).

Para falar com sua maior preocupação: não estou vendo nada que me leve a acreditar que um novo processo de trabalho não seria criado automaticamente. A instrução no seu link de estouro de pilha faz com que eu questione se o algoritmo usado pelo IIS pode, de fato, vincular a reciclagem à resolução do cronômetro usado para medir o esgotamento da cota da CPU. A melhor maneira que conheço para determinar isso seria escrever um componente do lado do servidor que desperdiça CPU, implantá-lo em um ambiente de teste e ver como o comportamento de reciclagem atua. Um componente simples que fica em um loop apertado por alguns segundos e, em seguida, retorna uma string conhecida, combinada com um cliente executando um harness de teste com algo como um pool de processos "wget" paralelos, pode ser o suficiente. Martelo com um monte de pedidos paralelos de um cliente e relatório sobre como as solicitações podem receber a resposta adequada versus mensagens de erro, etc. (Isso me faz sentir tão bobo por ter que recorrer a coisas como esta ao invés de apenas olhar no código fonte ...)

    
por 30.07.2010 / 18:00
3

Dados os comentários na outra resposta, eu fiz meus próprios testes, que vou replicar aqui.

No meu teste, limitando um pool de aplicativos (v4.0 integrado) a um pequeno limite de CPU (0,01%) e um pequeno intervalo (1 minuto) com a ação KillW3WP ativada, passando por cima deste limite mata o w3wp parando o pool de aplicativos .

Após o limite de intervalo ser atingido, o pool de aplicativos é reiniciado automaticamente .

Alterar a ação para Nenhuma ação não altera o processo w3wp.

Em ambos os casos, um Evento do Sistema 5025 é registrado.

    
por 03.04.2012 / 06:08