ИСПРАВЛЕНИЕ. Алгоритм нейгла TCP/IP для сервера очереди сообщений Майкрософт можно отключить

Проблема

При отправке сообщений с помощью очереди сообщений Майкрософт и 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, изменив следующий параметр реестра и выполнив инструкции в разделе "Активация изменений".

  1. В поддереве HKEY_LOCAL_MACHINE найдите следующий ключ:

          \Software\Microsoft\MSMQ\Parameters

  2. Выберите Добавить ключ в меню Правка и используйте следующие сведения:

          Имя значения: TcpNoDelay
          DWord: 1

Активация изменений

Диспетчер очередей должен быть остановлен и перезапущен после внесения изменений в реестр. Это можно сделать, остановив и запустив службу очереди сообщений Майкрософт на панели управления службами.

Ссылки

Примечание. Алгоритм Nagle определен в ПРОТОКОЛе TCP/IP RFC 896.