Melhorando a performance do IIS 4

Propaganda
Melhorando a performance do IIS 4.0
Problema: performance de site rodando MS Internet Information Server 4.0 ruim em
determinados momentos.
Sintomas: o site não responde prontamente aos requests de páginas ASP ou HTML, porém
não chega a travar o serviço Web. Não existe um motivo claro para tal comportamento;
dificuldade em isolar o problema. O desempenho do site independe do número de usuários
conectados.
Possível causa: os requests das páginas estão sendo colocados na fila de execução do IIS
mas estão demorando muito para serem processados. O sistema não está conseguindo
responder aos requests tão rápido quanto chegam novos requests.
Como monitorar: utilizando o Performance Monitor, selecionar os seguintes contadores para
análise de performance:
 Processador: % Processor Time (para cada processador)
 ActiveServerPages: Requests/Sec, Requests Executing, Requests Queued
 HttpService: Connections/Second, Current Anonymous Users
Observar principalmente o contador Requests Queued. Ele representa o número de requests
que estão na fila do IIS para serem processados. Em um site otimizado este número estará
sempre muito próximo de zero. Caso a fila esteja aumentando e diminuindo e/ou o número
de Requests Queued seja maior do que o número de Requests Executing, o site enfrentará
problemas de performance.
Isso explica o fato do site não necessariamente perder performance quando o número de
usuários é maior, porque o problema depende de quais requests os usuários estão fazendo
naquele momento e não do número de usuários conectados (pois eles podem não estar
fazendo nada naquele momento).
Solução: Caso constate-se que o problema seja a fila de processamento de requests, existem
2 aspectos a serem considerados:
 Se o processador está operando a mais de 70% do tempo isto significa a necessidade
de um aumento da capacidade do processador ou aumento do número de
processadores.
 Se o processador estiver operando a maior parte do tempo abaixo de 50% da
capacidade isto indica que algum ou alguns dos requests estão bloqueando o
processamento de outros. Neste caso, aumente o número de threads do processador
de 10 (default) para 20 (números decimais). Para fazer isso, modifique o valor da
chave
ProcessorThreadMax
para
20
(dec)
(Reg
Dword)
em
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ASP\Parameters
(a chave não será apresentada por default). Depois, dar um boot no servidor e
verificar o comportamento da fila e do processador.
Se a fila diminuir, mas não o suficiente, e o processador ainda estiver com capacidade para
suportar um número maior de threads (abaixo de 70%), aumentar o valor de
ProcessorThreadMax de 10 em 10 até atingir uma valor adequado para a fila e a capacidade
do processador (o valor máximo não deve ultrapassar 100). Testar em horários de pico.
Caso o comportamento da fila piore após essas modificações, isso significa um sério problema
de bloqueamento de requests . Neste caso, voltar a configuração para os valores anteriores e
rever o código da aplicação.
Alguns Best Practices para desenvolvimento de sites:
 Realizar testes de capacidade do site antes de colocá-lo em produção. Estressar ao






máximo a capacidade das máquinas.
Realizar testes em cada uma das consultas ao Banco de Dados que fazem parte da
aplicação do site; geralmente algumas dessas consultas acabam causando a demora
na resposta aos requests.
Preferir várias consultas SQL simples ao invés de poucas consultas complexas.
Otimizar o código (ver documentos listados abaixo).
Ter uma excelente máquina para o Banco de Dados.
Se um único servidor Web não seja o suficiente para atender a demanda, utilizar
Windows Load Balancing Services.
Monitorar sempre.
Documentação: existem diversos parâmetros que podem ser configurados para melhorar a
performance geral de um site rodando IIS. A seguir serão listados os documentos publicados
na Web ou no Technet que informam em detalhes quais são esses parâmetros e como
configurá-los, além de dicas de desenvolvimento e ferramentas para análise de capacidade:
Monitoramento e aperfeiçoamento de performance:

Tuning Internet Information Server Performance <http://www.microsoft.com/ISN/whitepapers/tuningiis.asp>

IIS 4.0 Tuning Parameters for High-Volume Sites <http://msdn.microsoft.com/workshop/server/feature/tune.asp>

Enhancing Performance in Internet Information Server 4.0 - Technet - Q235461

Server Performance Optimization on Microsoft’s Web Site <http://www.microsoft.com/backstage/whitepaper.htm>

Server Performance and Scalability Killers <http://msdn.microsoft.com/workshop/server/iis/tencom.asp>
Ferramentas de stress e análise:

The Microsoft® Web Capacity Analysis Tool (WCAT) 4.32 User Guide and Download <http://msdn.microsoft.com/workshop/server/toolbox/wcat.asp>

Web Application Stress Tool - <http://webtool.rte.microsoft.com/>
Aspectos de segurança a serem observados:

Microsoft Internet Information Server 4.0 Security Checklist <http://www.microsoft.com/security/products/iis/CheckList.asp>
Para sites que utilizem Microsoft Site Server 3.0:

Optimizing ASP Performance in Site Server 3.0, Commerce Edition - Technet

High Availability for MS Site Server 3.0 - Technet
Download