Sintomas
Ao enviar mensagens com o Microsoft Message Queue e TCP/IP como protocolo de transporte, pode haver um atraso de aproximadamente 300 ms antes que o pacote é enviado pela rede. Isso ocorre porque a pilha de TCP/IP do Windows usa o algoritmo de Nagle. O algoritmo Nagle melhora o desempenho, garantindo que os pacotes TCP/IP são usados com eficiência e impedindo que a rede está sendo inundada por pequenos pacotes TCP/IP. Embora, em alguns cenários pode ser vantajoso para permitir que os pacotes menores, por motivos de desempenho específicos. Este artigo descreve como desativar o algoritmo Nagle TCP/IP quando o MSMQ está enviando mensagens.
Importante: Este artigo contém informações sobre como modificar o registro. Certifique-se de fazer backup do registro antes de modificá-lo. Certifique-se de que você saiba como restaurar o registro caso ocorra um problema. Para obter mais informações sobre como fazer backup, restaurar e modificar o registro, clique no número abaixo para ler o artigo na Base de Conhecimento Microsoft:
256986 descrição do registro do Microsoft Windows
Resolução
Observação: O seguinte hotfix não é necessário para o MSMQ 2.0 (Windows 2000) ou MSMQ 3.0 (Windows XP e Windows 2003). No entanto, o valor de registro discutido na seção "Mais informações" deste artigo será ainda precisará ser adicionada.
Um hotfix com suporte foi disponibilizado pela Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.
Para resolver esse problema, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e informações sobre custos de suporte, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportObservação: em alguns casos, as taxas cobradas para chamadas de suporte podem ser canceladas caso um profissional de Suporte da Microsoft determine que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.
A versão em inglês desta correção deve ter os seguintes atributos de arquivo ou posteriores:
Date Time Version Size File name Platform
-------------------------------------------------------------
6/22/1999 1:34 PM 1.00.0294 481,552 MQQM.DLL x86
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".
Esse bug foi corrigido no Windows NT 4.0 Service Pack 6.
Mais informações
O algoritmo de TCP/IP Nagle
O algoritmo Nagle TCP/IP foi projetado para evitar problemas com pacotes pequenos, chamados tinygrams, em redes lentas. O algoritmo diz que uma conexão TCP/IP pode ter somente um segmento pequeno pendente que ainda não foi confirmado. A definição de "pequena" varia, mas geralmente ele é definido como "menor do que o tamanho do segmento", que Ethernet é de cerca de 1500 bytes.
Desabilitar manualmente o algoritmo Nagle
Você pode desativar o algoritmo Nagle, modificando a seguinte configuração do registro e seguindo as instruções na seção "Ativando o modificações".
-
Na subárvore HKEY_LOCAL_MACHINE, localize a seguinte chave:
\Software\Microsoft\MSMQ\Parameters -
Escolha Adicionar chave no menu Editar e use as seguintes informações:
Value Name: TcpNoDelay
DWord: 1
Ativando as modificações
O Gerenciador de fila deve ser interrompido e reiniciado após terem sido feitas as alterações no registro. Isso pode ser feito, parando e iniciando o Microsoft Message Queue Service no painel de controle serviços.
Referências
Observação: O algoritmo Nagle é definido no TCP/IP RFC 896.