IIS 8 Server muito ocupado

2

Eu tenho trabalhado nisso por algumas semanas. Tenho um servidor IIS 8.0 hospedando o aplicativo ASP .NET 4.0 no modo Classic. Dois dos arquivos são GET, que fazem leituras do sistema de arquivos para cada solicitação, e um é o post que grava no sistema de arquivos. Agora, às vezes, começo a obter "Servidor muito ocupado" em um servidor. Esse erro é intermitente quando o servidor atinge esse estado, ou seja, algumas das solicitações retornam 200, enquanto a maioria delas retorna "Servidor muito ocupado". E até mesmo a reinicialização do servidor IIS não faz com que ele se comporte normalmente.

Eu li sobre as possíveis causas deste problema. Basicamente, o tamanho da fila excedendo um limite, o tempo limite de solicitações na fila, etc., deve ser o motivo. Agora, existem filas em vários níveis, HTTP.sys para o pool de aplicativos, fila global ASP .Net, fila de aplicativo (AppDomain), fila CLR.

Tentei reproduzir o erro enviando várias solicitações GET ao servidor simultaneamente, mas nenhum tamanho da fila parece estar aumentando muito, conforme o perfmon. Comecei a receber "Connection Timeout" devido a isso, mas não "Servidor muito ocupado". Onde estou errado em reproduzir isso? É porque estou enviando a mesma solicitação toda vez e ela está sendo armazenada em cache pelo próprio cache http.sys?

Para ter certeza, eu sou capaz de descobrir isso da próxima vez que eu encontrar, eu quero registrar vários tamanhos de fila periodicamente, número de pedidos pendentes no receptor, o número de pedidos para cada API atualmente em processo , ou seja, registre qualquer um dos parâmetros que possam causar esse problema periodicamente. Como posso fazer isso?

Não recebi nenhum log de erros nos logs do ASP .NET. No HTTPERR, posso encontrar muitos erros "Timer_ConnectionIdle" e muito poucos "503 N / A" (Serviço não disponível).

Por favor ajude. Agradecemos antecipadamente.

Editar: ao rastrear a solicitação "Servidor ocupado", recebi um aviso de eventos. Aqui está o traço disso:

-MODULE_SET_RESPONSE_ERROR_STATUS 


ModuleName
IsapiModule 

Notification
EXECUTE_REQUEST_HANDLER 

HttpStatus
503 

HttpReason
Server Too Busy 

HttpSubStatus
0 

ErrorCode
The operation completed successfully.
 (0x0) 

Alguém, por favor, pode fornecer algum insight sobre isso?

    
por ptntialunrlsd 24.04.2015 / 21:25

1 resposta

0

Em termos de recriar o problema, a maneira como a maioria dos servidores da Web (incluindo IIS) lida com várias conexões de um endereço / cliente é diferente de como ele lida com conexões de vários endereços / clientes. Considere executar uma ferramenta de geração de carga (especialmente uma que pode falsificar vários endereços IP simultâneos ou pelo menos vários clientes virtuais do gerador de carga) para obter uma visão melhor do que pode estar acontecendo. Eu não usei isso, mas a Microsoft aparentemente recomenda uma ferramenta para isso: link e link

    
por 14.06.2015 / 22:38