修正: Microsoft メッセージ キュー サーバーの TCP/IP Nagle アルゴリズムを無効にできる

現象

トランスポート プロトコルとして Microsoft メッセージ キューと TCP/IP を使用してメッセージを送信する場合、パケットがネットワーク経由で送信されるまでに約 300 ミリ秒の遅延が発生する場合があります。 これは、Windows TCP/IP スタックで Nagle アルゴリズムが使用されるためです。 Nagle アルゴリズムは、TCP/IP パケットが適切に使用され、ネットワークが小さな TCP/IP パケットで洪水するのを防ぐことで、パフォーマンスを向上します。 ただし、一部のシナリオでは、特定のパフォーマンス上の理由から、より小さいパケットを許可する方が有利な場合があります。 この記事では、MSMQ がメッセージを送信しているときに Nagle TCP/IP アルゴリズムを無効にする方法について説明します。

重要: この資料には、レジストリの編集方法が記載されています。 レジストリを変更する前に、必ずバックアップしてください。 問題が発生した場合にレジストリを復元する方法を確認しておいてください。 レジストリのバックアップ、復元、および編集方法の詳細については、以下のサポート技術情報番号をクリックしてください。

256986 Microsoft Windows レジストリの説明

解決策

注: 次の修正プログラムは、MSMQ 2.0 (Windows 2000) または MSMQ 3.0 (Windows XP および Windows 2003) には必要ありません。 ただし、この記事の「詳細」に記載されているレジストリ値を追加する必要があります。

サポートされている修正プログラムがマイクロソフトから提供されていますが、この資料で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用してください。

この問題を解決するには、Microsoft 製品サポート サービス に問い合わせて修正プログラムを入手してください。 Microsoft 製品サポート サービス の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support注: Microsoft サポート担当者が、特定の更新プログラムを適用することにより問題が解決されると判断した場合、まれに通常サポート依頼にかかる料金が免除されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

この修正プログラムの英語版には、次のファイル属性が含まれるか、それ以降になります。

   日付 時刻 バージョン サイズ ファイル名 プラットフォーム
   -------------------------------------------------------------
   6/22/1999 1:34 PM 1.00.0294 481,552 MQQM.DLL x86

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

このバグは Windows NT 4.0 Service Pack 6 で修正されています。

追加情報

Nagle TCP/IP アルゴリズム

Nagle TCP/IP アルゴリズムは、低速ネットワーク上で tinygram と呼ばれる小さなパケットの問題を回避するように設計されています。 このアルゴリズムは、TCP/IP 接続でまだ確認されていない未処理の小さいセグメントを 1 つだけ含めることができることを示しています。 「小さい」の定義はさまざまですが、通常は「セグメント サイズ未満」として定義され、イーサネットでは約 1500 バイトです。

Nagle アルゴリズムを手動で無効にする

Nagle アルゴリズムを無効にするには、次のレジストリ設定を変更し、「変更を有効にする」セクションの手順を使用します。

  1. サブツリー HKEY_LOCAL_MACHINEの下で次のキーを見つけます。

          \Software\Microsoft\MSMQ\Parameters

  2. [編集] メニューから [キーの追加] を選択し、次の情報を使用します。

          値の名前: TcpNoDelay
          DWord: 1

変更のアクティブ化

レジストリを変更した後は、キュー・マネージャーを停止して再始動する必要があります。 これを行うには、サービス コントロール パネルから Microsoft Message Queue サービスを停止および開始します。

参考資料

注: Nagle アルゴリズムは、TCP/IP RFC 896 で定義されています。