Проблема
При отправке сообщений с помощью очереди сообщений Майкрософт и TCP/IP в качестве транспортного протокола может возникнуть задержка примерно в 300 мс, прежде чем пакет будет отправлен по сети. Это связано с тем, что стек TCP/IP в Windows использует алгоритм Nagle. Алгоритм Nagle повышает производительность, обеспечивая эффективное использование пакетов TCP/IP и предотвращая переполнение сети небольшими пакетами TCP/IP. Хотя в некоторых сценариях может быть полезно разрешить небольшие пакеты по определенным причинам производительности. В этой статье описывается отключение алгоритма TCP/IP Nagle, когда MSMQ отправляет сообщения.
Важно! Эта статья содержит сведения об изменении реестра. Не забудьте создать резервную копию реестра перед внесением изменений. Убедитесь в том, что вы знаете, как восстановить реестр в случае возникновения проблем. Чтобы получить дополнительные сведения о резервном копировании, восстановлении и изменении реестра, щелкните следующий номер статьи, чтобы просмотреть статью базы знаний Майкрософт:
256986 описание реестра Microsoft Windows
Решение
Примечание. Следующее исправление не требуется для MSMQ 2.0 (Windows 2000) или MSMQ 3.0 (Windows XP и Windows 2003). Однако значение реестра, описанное в разделе "Дополнительные сведения" этой статьи, по-прежнему потребуется добавить.
Поддерживаемое исправление теперь доступно в корпорации Майкрософт, но оно предназначено только для устранения проблемы, описанной в этой статье. Применяйте его только к системам, в которых возникла эта конкретная проблема.
Чтобы устранить эту проблему, обратитесь в службу поддержки майкрософт, чтобы получить исправление. Полный список телефонных номеров служб поддержки продуктов Майкрософт и сведения о расходах на поддержку см. на следующем веб-сайте Майкрософт:
http://support.microsoft.com/contactus/?ws=support Примечание. В особых случаях плата, которая обычно взимается за звонки в службу поддержки, может быть отменена, если служба поддержки Майкрософт Professional определит, что конкретное обновление решит проблему. Обычные расходы на поддержку будут применяться к дополнительным вопросам и проблемам поддержки, которые не относятся к конкретному обновлению.
Версия этого исправления на английском языке должна иметь следующие атрибуты файла или более позднюю версию:
Date Time Version Size File name Platform
-------------------------------------------------------------
22.06.1999 13:34 1.00.0294 481 552 MQQM.DLL x86
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Эта ошибка была исправлена в Windows NT 4.0 с пакетом обновления 6 (SP6).
Дополнительные сведения
Алгоритм Nagle TCP/IP
Алгоритм Nagle TCP/IP разработан, чтобы избежать проблем с небольшими пакетами, называемыми tinygrams, в медленных сетях. Алгоритм говорит, что подключение TCP/IP может иметь только один выдающийся небольшой сегмент, который еще не был подтвержден. Определение "small" отличается, но обычно оно определяется как "меньше размера сегмента", который в Ethernet составляет около 1500 байт.
Отключение алгоритма Nagle вручную
Вы можете отключить алгоритм Nagle, изменив следующий параметр реестра и выполнив инструкции в разделе "Активация изменений".
В поддереве HKEY_LOCAL_MACHINE найдите следующий ключ:
\Software\Microsoft\MSMQ\Parameters
Выберите Добавить ключ в меню Правка и используйте следующие сведения:
Имя значения: TcpNoDelay
DWord: 1
Активация изменений
Диспетчер очередей должен быть остановлен и перезапущен после внесения изменений в реестр. Это можно сделать, остановив и запустив службу очереди сообщений Майкрософт на панели управления службами.
Ссылки
Примечание. Алгоритм Nagle определен в ПРОТОКОЛе TCP/IP RFC 896.