Sintomas
Quando enviar mensagens com o Microsoft Message Queue e TCP/IP como protocolo de transporte, poderá existir um atraso de aproximadamente 300ms antes do pacote é enviado através da rede. Isto acontece porque a pilha de TCP/IP do Windows utiliza o algoritmo de Nagle. O algoritmo Nagle melhora o desempenho assegurar pacotes TCP/IP são utilizados de forma eficiente e impedir que a rede seja alagado com pequenos pacotes de TCP/IP. Embora, em alguns cenários poderá ser vantajoso para permitir que os pacotes mais pequenos por razões de desempenho específicos. Este artigo descreve como desactivar o algoritmo de TCP/IP de Nagle, quando o MSMQ está a enviar mensagens.
Importante Este artigo contém informações sobre como modificar o registo. Certifique-se efectuar cópias de segurança do registo antes de o modificar. Certifique-se de que sabe como restaurar o registo se ocorrer um problema. Para mais informações sobre como efectuar cópias de segurança, restaurar e modificar o registo, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
256986 descrição do registo do Microsoft Windows
Resolução
Nota A correcção seguinte não é necessária para MSMQ 2.0 (Windows 2000) ou o MSMQ 3.0 (Windows XP e Windows 2003). No entanto, o valor de registo abordado na secção "Mais informação" deste artigo será ainda terá de ser adicionado.
Agora tem uma correcção suportada disponível na Microsoft, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico.
Para resolver este problema, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.
A versão inglesa desta correcção deverá ter os seguintes atributos de ficheiro ou posteriores:
Date Time Version Size File name Platform
-------------------------------------------------------------
6/22/1999 1:34 PM 1.00.0294 481,552 MQQM.DLL x86
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Este erro foi corrigido no Windows NT 4.0 Service Pack 6.
Mais informações
O algoritmo de TCP/IP Nagle
O algoritmo de TCP/IP de Nagle foi concebido para evitar problemas com pequenos pacotes, denominados tinygrams, em redes lentas. O algoritmo afirma que uma ligação de TCP/IP pode ter apenas um segmento de pequeno pendente que ainda não foi confirmado. A definição de "pequenas" varia, mas normalmente é definida como "menor do que o tamanho do segmento", que na ethernet é de cerca de 1500 bytes.
Desactivar manualmente o algoritmo de Nagle
Pode desactivar o algoritmo de Nagle, modificando a seguinte definição do registo e utilizando as instruções na secção "Activar a modificações".
-
No âmbito da subárvore HKEY_LOCAL_MACHINE, localize a seguinte chave:
\Software\Microsoft\MSMQ\Parameters -
Escolher Adicionar chave a partir do menu Editar e utilize as seguintes informações:
Value Name: TcpNoDelay
DWord: 1
Activar as alterações
O Gestor de filas deve ser parado e reiniciado depois de terem sido efectuadas as alterações ao registo. Pode fazê-lo parando e iniciando o serviço de fila Microsoft a partir do painel de controlo de serviços.
Referências
Nota O algoritmo Nagle está definido no 896 de RFC do TCP/IP.