ID do artigo: 823764 - Última revisão: quarta-feira, 28 de fevereiro de 2007 - Revisão: 5.6 Desempenho lento ocorre quando você copia dados para um servidor TCP usando um programa de API do Windows Sockets
Nesta páginaSintomasQuando você executa um programa que usa a API do Sockets do Windows, você enfrenta um desempenho lento quando você copia dados para um servidor TCP. Se você fizer um rastreamento de rede com um sniffer, como Microsoft Network Monitor de rede, o servidor TCP envia uma ACK TCP para o último segmento segmento TCP em um fluxo de dados TCP no timer de confirmação de recebimento atrasado (também conhecido como o cronômetro ACK atrasado). Por padrão, para sistemas operacionais Windows, o valor para este timer é 200 milissegundos (ms). Um fluxo de dados típico para envio de 64 quilobytes (KB) de dados é semelhante à seguinte seqüência: bytes Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK .... Client->Server 1460 bytes Client->Server 1460 bytes Server->Client ACK-PUSH Client->Server 1296 bytes -> delayed ACK 200 ms CausaEsse problema ocorre devido ao comportamento arquitetura da API do Windows Sockets e Afd.sys. Esse problema ocorre se todas as seguintes condições forem verdadeiras:
Como ContornarPara solucionar esse problema, use qualquer um dos seguintes métodos. Método 1: Usar bloqueio SocketsEsse problema ocorre apenas com soquetes sem bloqueio. Quando você usa um soquete de bloqueio, esse problema não ocorre porque o Afd.sys lida com o buffer de soquete diferente. Para obter mais informações sobre soquete sem bloqueio e bloqueio de programação, consulte a documentação do Microsoft Platform SDK.Método 2: Verifique o tamanho do buffer enviar soquete maiores que o tamanho do buffer de envio de programaPara modificar o buffer de envio de soquete, use a função de getsockopt Windows Sockets para determinar o tamanho atual de buffer de envio do soquete (SO_SNDBUF) e, em seguida, usar setsockopt função para definir o soquete enviar tamanho do buffer. Quando tiver terminado, o valor SO_SNDBUF deve ser maior que o tamanho de buffer programa envio pelo menos 1 byte.Modificar a chamada de Enviar ou a chamada WSASend para especificar um buffer de tamanho menor que o valor SO_SNDBUF pelo menos 1 byte. No exemplo anterior da seção "Causa" deste artigo, você poderia modificar ao seguinte valor, Método 3: Modificar as configurações de TCP/IP no servidor de TCPimportante 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:322756
(http://support.microsoft.com/kb/322756/
)
Como fazer backup e restaurar o registro no Windows Modificar as configurações TCP/IP no servidor TCP para confirmar imediatamente entrados segmentos TCP. Esta solução alternativa funciona melhor em um ambiente que tem uma base de instalação de cliente grandes e onde você não pode alterar o comportamento do programa. Para cenários em que o servidor TCP remoto é executado em um servidor baseado no Windows, você deve modificar o registro do servidor remoto. Para outros sistemas operacionais, consulte documentação do sistema operacional para obter informações sobre como alterar o timer de confirmação atrasada. Em um servidor que executa o Windows 2000, execute estas etapas:
Método 4: Modificar o comportamento de buffer no Afd.sys para soquetes sem bloqueioimportante 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:322756
(http://support.microsoft.com/kb/322756/
)
Como fazer backup e restaurar o registro no Windows Observação Essa chave do Registro só está disponível para Windows Server 2003 com Service Pack 1 e service packs posteriores.
SituaçãoA Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a". Referências328890
(http://support.microsoft.com/kb/328890/
)
Nova entrada do Registro para controlar o comportamento de confirmação (ACK TCP) no Windows XP e no Windows Server 2003 A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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: 823764
(http://support.microsoft.com/kb/823764/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início