Симптоми
При изпращане на съобщения с Microsoft Message Queue и TCP/IP като транспортен протокол, може да има забавяне от около 300 ms, преди пакетът да бъде изпратен по мрежата. Това е така, защото TCP/IP стекът на Windows използва алгоритъма на Нейгъл. Алгоритъмът на Nagle подобрява производителността, като гарантира, че TCP/IP пакетите се използват ефективно и предотвратява наводняването на мрежата с малки TCP/IP пакети. Въпреки че в някои случаи може да е изгодно да разрешите по-малките пакети поради конкретни причини, свързани с производителността. Тази статия описва как да забраните TCP/IP алгоритъма на Nagle, когато MSMQ изпраща съобщения.
Важно: Тази статия съдържа информация как да промените системния регистър. Не забравяйте да архивирате системния регистър, преди да го променяте. Уверете се, че знаете как да възстановите системния регистър, ако възникне проблем. За повече информация как да направите архивно копие на системния регистър, да възстановите регистъра или да го модифицирате, щракнете върху следния номер на статия в базата знания на Microsoft:
256986 Описание на системния регистър на Microsoft Windows
Решение
Забележка: Следните горещи корекции не са необходими за MSMQ 2.0 (Windows 2000) или MSMQ 3.0 (Windows XP и Windows 2003). Въпреки това стойността на системния регистър, обсъждана в раздела "Повече информация" на тази статия, ще трябва да бъде добавена.
Поддържа гореща корекция сега се предлага от Microsoft, но тя е предназначена единствено за коригиране на проблема, който този статия описва. Прилагайте го само към системи, които срещат този конкретен проблем.
За да разрешите този проблем, се свържете със службата за поддръжка на продукти на Microsoft, за да получите горещата корекция. За пълен списък на телефонните номера на услугите за поддръжка на продукти на Microsoft и информация относно разходите за поддръжка посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=support Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако професионалистът по поддръжка на Microsoft определи, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.
Английската версия на тази корекция трябва да има следните файлови атрибути или по-нови:
Дата Час Размер на версията Име на файл Платформа
-------------------------------------------------------------
22.6.1999 г. 13:34 ч. 00.0294 481 552 MQQM.DLL x86
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Тази грешка е коригирана в Windows NT 4.0 Service Pack 6.
Повече информация
Алгоритъмът на Nagle TCP/IP
Алгоритъмът на Nagle TCP/IP е проектиран да избягва проблеми с малки пакети, наречени tinygrams, в бавни мрежи. Алгоритъмът казва, че TCP/IP връзката може да има само един изключителен малък сегмент, който все още не е признат. Дефиницията за "малък" е различна, но обикновено се дефинира като "по-малка от размера на сегмента", който в Ethernet е около 1500 байта.
Ръчно забраняване на алгоритъма на Nagle
Можете да деактивирате алгоритъма на Nagle, като промените следната настройка на системния регистър и използвате инструкциите в раздела "Активиране на модификациите".
Под поддървото HKEY_LOCAL_MACHINE намерете следния ключ:
\Software\Microsoft\MSMQ\Parameters
Изберете "Добавяне на клавиш" от менюто "Редактиране" и използвайте следната информация:
Име на стойността: TcpNoDelay
Дата на раждане: 1
Активиране на промените
Диспечерът на опашки трябва да бъде спрян и рестартиран след като са направени промените в системния регистър. Това може да се извърши чрез спиране и стартиране на услугата за опашки от съобщения на Microsoft от контролния панел на услугите.
Справки
Алгоритъмът на Нейгъл е дефиниран в TCP/IP RFC 896.