Erro: O IIS 6.0 é mais lento que o IIS 5.0 quando você usa a API WriteClient para enviar dados

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 840875
Sumário
Serviços de informações da Internet (IIS) 6.0 leva mais tempo para enviar pacotes de dados de resposta HTTP por meio da API WriteClient que leva do IIS 5.0. Você enfrentar esse problema com aplicativos que usam o síncrona ISAPI WriteClient API para enviar respostas. Você também ter esse problema com aplicativos que tornam mais assíncrona ISAPI WriteClient chamada para enviar respostas. Este artigo lista os sintomas comuns que você pode ver quando você enfrentar esse problema. Este artigo também lista dois métodos que você pode usar para solucionar esse problema.
Sintomas
Você pode observar que o Microsoft Internet Information Services (IIS) 6.0 demora mais para enviar a resposta HTTP pacotes de dados por meio de WriteClient API que IIS 5.0. Essa condição geralmente ocorre com os seguintes tipos de aplicativos:
  • Aplicativos que usam o síncrona ISAPI WriteClient API para enviar respostas.
  • Os aplicativos que tornam mais assíncrona ISAPI WriteClient chamar para enviar respostas.
Os seguir listas sintomas comuns que você pode observar quando você enfrentar esse problema:
  • Quando você usa o serviço de logs e alertas de desempenho para monitorar o contador solicitações/s do objeto serviço da Web, o desempenho do servidor estiver lento quando ele é comparado com o desempenho de um servidor que está executando o IIS 5.0 no hardware semelhante. Você pode perceber que o IIS 6.0 processos aproximadamente metade solicitações por segundo, como processos do IIS 5.0.
  • Clientes podem enfrentar um ou mais dos seguintes sintomas:
    • Clientes sofrer atrasos maiores quando os clientes recebem as respostas do servidor.
    • Clientes receber uma mensagem de erro semelhante à seguinte:
      503 Serviço indisponível
    • A conexão com o servidor é redefinida quando o cliente envia uma solicitação.
  • Uso da CPU é geralmente baixo. No entanto, as solicitações se acumulam no HTTP.sys. Quando você usa o serviço de logs e alertas de desempenho para monitorar o contador conexões atuais do objeto serviço da Web, você notar que as solicitações para o servidor alcancem o tamanho máximo da fila de solicitações. Por padrão, o comprimento máximo da fila é 4000 conexões. Depois que as solicitações excedeu o número máximo de conexões, o servidor retorna "503 serviço não disponível" mensagens de erro para os clientes. Uma indicação que solicitações acumulam no HTTP.sys é que o valor do contador conexões atuais é muito semelhante ao menor de um dos seguintes valores:
    • O comprimento de fila de solicitação.
    • O limite máximo de conexões globais para HTTP. O limite máximo de conexões globais para HTTP é 8000 conexões em computadores 86 x.
  • Em aplicativos que usam ISAPI síncrona, a maioria dos threads do processo de trabalho no IIS é bloqueada. Os segmentos estão aguardando a operação de envio para ser concluída. Usar um Microsoft Windows-modo de usuário depuração ferramenta, como as ferramentas WinDbg, a ferramenta NTSD ou a ferramenta Cdb para verificar essa condição. Quando você anexa a ferramenta depurador ao processo de trabalho que atende as solicitações, você notar que a maioria dos threads de trabalho do processo são bloqueadas no chamadas para o componente HttpApiSynchronousDeviceControl() . Normalmente, o processo do operador que serve a ISAPI solicitações é o processo W3wp.exe. Este é um exemplo de uma pilha de chamada é gerada quando esse problema ocorre:
    ChildEBP RetAddr  017af62c 77f43741 SharedUserData!SystemCallStub+0x4017af630 67153781 ntdll!NtWaitForSingleObject+0xc017af658 67151c61 httpapi!HttpApiSynchronousDeviceControl+0x57017af67c 67152db0 httpapi!HttpApiDeviceControl+0x23017af6cc 5a3616b7 httpapi!HttpSendResponseEntityBody+0x64017af710 5a36170d w3dt!UL_NATIVE_REQUEST::SendEntity+0x7c017af730 5a3944cd w3dt!UlAtqSendEntityBody+0x1d017af75c 5a399987 w3core!SendEntityBodyAndLogDataHelper+0x7c017af798 5a399a3a w3core!W3_RESPONSE::SendEntity+0xf1017af7bc 5a39b38c w3core!W3_CONTEXT::SendEntity+0x8c017af7d8 5a32378d w3core!ISAPI_REQUEST::WriteClient+0xf7017afa3c 10016dfe w3isapi!WriteClient+0x27d77e42f38 458b18ec 
Causa
Esse problema ocorre devido a uma diferença no buffer mecanismos no HTTP.sys no IIS 6.0 e no IIS 5.0.
Como Contornar
Para contornar esse problema, use um dos seguintes métodos, dependendo da sua situação.

Método 1: Adicionar a entrada de registro MaxCopyThreshold

Você também pode enfrentar esse problema em aplicativos que usam WriteClient API para chamadas assíncronas e que fazem chamadas WriteClient dois ou mais por resposta HTTP. Se você suspeitar que apresentarem esse problema, adicione a entrada de registro MaxCopyThreshold à seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
Para melhorar o desempenho e uso de memória, recomendamos que você defina a entrada de registro MaxCopyThreshold para o menor valor possível. É recomendável que você teste os seguintes valores e, em seguida, use o valor mais baixo que corrige esse problema:
  • 8192
  • 16384
  • 32768
  • 65536
  • 131072
Para adicionar a entrada de registro MaxCopyThreshold, execute estas etapas: importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756Como fazer backup e restaurar o registro no Windows
  1. Clique em Iniciar , clique em Executar , digite regedit na caixa Abrir e, em seguida, clique em OK .
  2. No Editor do Registro, localize e, em seguida, clique na seguinte subchave do Registro:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  3. No menu Editar , aponte para novo e, em seguida, clique em Valor DWORD .
  4. No painel direito do Editor do Registro, digite MaxCopyThreshold e, em seguida, pressione ENTER.
  5. Clique duas vezes em MaxCopyThreshold entrada do Registro. A caixa de diálogo Editar valor DWORD é exibida.
  6. Digite o valor apropriado na caixa dados do valor e, em seguida, clique em OK .
  7. Feche o Editor do Registro.
  8. Reinicie o computador.

Método 2: Adicionar a entrada de registro EnableCopySend

Use este método somente para ISAPIs que executam operações de envio síncrono. Você também pode usar essa solução alternativa se pelo menos uma ISAPI síncrona enfrentar um atraso de rede. No entanto, esse método não funciona em um ambiente onde a maioria dos clientes usa links lentos, como modems.
Para aplicar esta solução alternativa, adicione a entrada de registro EnableCopySend para a seguinte subchave do Registro e, em seguida, defina a entrada do Registro como 1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
Para fazer isso, execute as seguintes etapas: importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756Como fazer backup e restaurar o registro no Windows
  1. Clique em Iniciar , clique em Executar , digite regedit na caixa Abrir e, em seguida, clique em OK .
  2. No Editor do Registro, localize e, em seguida, clique na seguinte subchave do Registro:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  3. No menu Editar , aponte para novo e, em seguida, clique em Valor DWORD .
  4. No painel direito do Editor do Registro, digite EnableCopySend e, em seguida, pressione ENTER.
  5. Clique duas vezes na entrada de registro EnableCopySend . A caixa de diálogo Editar valor DWORD é exibida.
  6. Digite 1 na caixa dados do valor e, em seguida, clique em OK .
  7. Feche o Editor do Registro.
  8. Reinicie o computador.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft que estão listados na seção "Aplica-se A".
Mais Informações
As seguintes implicações listas a serem considerados quando você usar a entrada de registro EnableCopySend ou entrada do Registro MaxCopyThreshold:
  • Ambas as chaves do Registro instruem o driver HTTP.sys para usar mais memória.
  • O número total de conexões que HTTP.sys pode manipular é reduzido se você usar um dessas entradas do Registro.
  • Uso da CPU no servidor aumenta devido à sobrecarga adicional que resulta do buffer de dados.
Referências
Se o buffer de resposta for desativado no IIS 6.0, você também ter esse problema com o Active Server Pages (ASP). Por padrão, buffer de resposta está ativado no IIS 6.0, e você não enfrentar esse problema. Para obter informações adicionais sobre o buffer de resposta, visite o seguinte site: Para obter mais informações sobre WriteClient API, visite o seguinte site da Web Microsoft Developer Network (MSDN):Para obter mais informações sobre ferramentas de depuração para Windows, visite o seguinte site: Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
555093Transferências de dados muito lenta usando RDS em Windows Server 2003, todas as versões

Propriedades

ID do Artigo: 840875 - Última Revisão: 12/03/2007 21:24:46 - Revisão: 2.9

Microsoft Internet Information Services 6.0, Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Web Edition, Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, 64-Bit Datacenter Edition

  • kbmt kbtshoot kbregistry kbnetwork kbisapiext kbenable kbbug kbapi kbperformance KB840875 KbMtpt
Comentários