現在オフラインです。再接続するためにインターネットの接続を待っています

Internet Explorer 6 を使用して、インターネット インフォメーション サービス 6.0 でホストされている Web アプリケーションにアクセスすると、Web パフォーマンスが低下することがある

現象
次のような状況を想定します。
  • Microsoft インターネット インフォメーション サービス 6.0 (IIS 6.0) Web アプリケーション環境で Windows 統合認証を使用している。
  • Microsoft Internet Explorer 6 を使用して、IIS 6.0 でホストされている Web アプリケーションにアクセスしている。
この場合、Web アプリケーションのパフォーマンスが低下することがあります。

: 認証プロトコルとして匿名認証を使用した場合、この問題は発生しません。また、クライアントのブラウザが Internet Explorer 6 以外のブラウザ (Mozilla Firefox など) である場合にもこの問題は発生しません。
原因
この問題は、Internet Explorer 6 クライアントが定期的に TCP 接続をリセットすることが原因で発生します。

クライアントとサーバーの間の通信速度が低下しているときにキャプチャされたネットワーク トレースを分析すると、クライアントが要求したリソースに対して 200 応答が返された後 TCP がリセットされることがわかります。クライアントは、ETag HTTP ヘッダーとその値が含まれた GET 要求を送信します。IIS 6.0 を実行しているサーバーは、その要求を受信すると、ETag の値を比較し、要求されたファイルの現在の値と ETag の値 (変更番号以外) が一致するかどうかを確認します。

: ETag ヘッダーの形式は次のとおりです (Filetimestamp はファイルのタイム スタンプを、ChangeNumber は変更番号を表します)。

Filetimestamp:ChangeNumber

たとえば、Internet Explorer クライアントが ETag 値 0222d5bffcbc41:301a を含む要求を送信し、その後サーバーが ETag 値 0222d5bffcbc41:3246 を含む HTTP 200 応答を送信します。

要求内の Filetimestamp の番号は、要求されたリソースの現在の値として IIS 6.0 が認識する番号と一致しますが、要求内の ChangeNumber の番号はその番号と一致しないため、IIS 6.0 はクライアント側にキャッシュされているコピーを提供するよう Internet Explorer に指示せず、そのファイルの現在のバージョンを返します。Internet Explorer には、200 応答の Filetimestamp を、ローカルにキャッシュされたコピーの Timestamp と比較するコードが含まれています。これらの値が一致した場合、接続はリセットされます。これは Internet Explorer クライアントで、内容が一致した場合は 304 状態報告を受信することが想定されているためです。

つまり IIS 6.0 は、変更番号が一致しない場合、クライアントによって要求されたリソースのバージョンが、クライアントのブラウザ キャッシュにあるこのリソースの既存のバージョンに一致しないと認識するため、200 応答を送信します。しかし Internet Explorer は、Filetimestamp が一致しているため、同じバージョンであると認識します。さらに Internet Explorer は、誤って送信された 200 応答を受信していると認識します。この場合、Internet Explorer は TCP 接続をリセットします。
回避策

Microsoft Windows Server 2003 ベースのコンピュータを使用している場合

この問題を回避するために、Web サーバーに変更番号をハードコードし、すべての Internet Explorer クライアントに対して、ファイルのバージョンを同期することをお勧めします。すべての Internet Explorer クライアントは、アプリケーションに必要なすべてのファイルのバージョンを保持するため、サーバーとすべてのクライアントが同期されているようにする必要があります。

: IIS 6.0 Web ファーム環境で実行している場合は、ファーム内で IIS 6.0 を実行しているすべてのサーバーに同じ変更番号をハードコードする必要があります。

変更番号の値をクライアントとサーバーの間で同期するには、次の手順を実行します。
  1. IIS 6.0 メタベースの ETag 値を手動でハードコードします。

    Windows Server 2003 Service Pack 1 (SP1) では、IIS 6.0 の ETag 変更番号を変更できます。
    : ETag 値を変更すると問題が発生する場合があります。この問題を解決するには、修正プログラムをインストールする必要があります。この修正プログラムの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    900245 IIS 6.0 のメタベース プロパティを変更すると ETAG フィールドの値が更新される
    修正プログラムのインストール後、手動で ETag 変更番号をハードコードできます。ただし、ETag 変更番号の設定は、Active Directory サービス インターフェイス (ADSI) 名前空間に公開されていません。このため、Metabase Explorer ツールを使用して、プロパティ ID を手掛かりにして値を設定する必要があります。Metabase Explorer をダウンロードしてインストールするには、次のマイクロソフト Web サイトを参照してください。 : Metabase Explorer は、IIS 6.0 Resource Kit Tools に含まれています。

    手動で ETag 変更番号をハードコードするには、次の手順を実行します。
    1. Metabase Explorer を起動し、左側のウィンドウの [LM] を展開して、[W3SVC] をクリックします。
    2. 右側のウィンドウにある ID 2039 のレコードをダブルクリックします。
    3. [Value] ボックスに 1 ~ 4294967295 の数字を入力します。実際に使用する値は、この範囲内であればどの値でもかまいません。詳細については、次のマイクロソフト Web サイトを参照してください。
    4. [Apply] をクリックし、[OK] をクリックします。
    : IIS 6.0 Web ファーム環境で IIS 6.0 サーバーを実行している場合は、ファーム内のすべての IIS 6.0 サーバーで手順 1a. ~ 1d. を実行します。すべてのサーバーで同じ変更番号を追加するようにしてください。
  2. クライアントの Internet Explorer のブラウザ キャッシュをクリアします。

    クライアント ブラウザの数が多すぎて手動ではキャッシュを消去できない場合は、IIS 6.0 の [コンテンツに有効期限を設定する] チェック ボックスをオンにした後、コンテンツの有効期限が直ちに切れるように指定できます。この場合、クライアントが保持するすべてのコンテンツが最新になるまでの間のみ、[コンテンツに有効期限を設定する] チェック ボックスをオンにしておき、コンテンツが最新になったら [コンテンツに有効期限を設定する] チェック ボックスをオフにして、キャッシュされたコンテンツを再び Internet Explorer で提供できるようにする必要があります。コンテンツの有効期限を有効にするには、次の手順を実行します。
    1. インターネット インフォメーション サービスを起動します。
    2. 左側のウィンドウの [LocalMachine] を展開し、[Web サイト] をクリックします。
    3. [Web サイト] を右クリックし、[プロパティ] をクリックします。
    4. [HTTP ヘッダー] タブで、[コンテンツに有効期限を設定する] チェック ボックスをオンにし、[直ちに有効期限を切る] をクリックします。
    5. IIS 6.0 サービスを停止して再起動します。
    : [コンテンツに有効期限を設定する] チェック ボックスがオンになった後、Internet Explorer のキャッシュを更新するためにクライアントから 1 つのリソースに対して 2 回要求することが必要な場合があります。

Windows Server 2003 ベースのコンピュータを使用していない場合

この問題を回避するには、「Microsoft Windows Server 2003 ベースのコンピュータを使用している場合」の手順 2. を使用して、IIS 6.0 の [コンテンツに有効期限を設定する] チェック ボックスをオンにしておきます。さらに、Internet Explorer のキャッシュ機能を無効にするか、Web アプリケーションにキャッシュ制御ヘッダーを設定します。Web キャッシュを無効にする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
311006 [HOWTO] Windows 2000 で Web キャッシュを禁止する方法
状況
この動作は仕様です。
詳細
クライアントまたはサーバーでキャプチャされたネットワーク モニタのトレースを分析する際に、そのトレースがこの資料に記載されているパフォーマンスのシナリオに関連している場合、次に示す一連の動作を確認できます。
  1. クライアントが、IIS 6.0 を実行しているサーバーに GET 要求を送信します。この要求には、Filetimestamp:ChangeNumber 値を持つ If-None-Match ヘッダーが含まれています。要求の例を次に示します。
    HTTP: GET Request from ClientHTTP: Request Method =GETHTTP: Uniform Resource Identifier =/MARRS/webService.htcHTTP: Protocol Version =HTTP/1.1HTTP: Accept = */*HTTP: Accept-Encoding =gzip, deflateHTTP: If-Modified-Since =Tue, 16 Nov 2004 17:11:48 GMTHTTP: If-None-Match ="0222d5bffcbc41:301a" HTTP: User-Agent =Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1HTTP: Host =nnoma-wwapp02mHTTP: Connection =Keep-AliveHTTP: Authorization =Negotiate TlRMTVNTUAADAAAAGAAYAG4AAAAKAQoBhgAAAAoACgBIAAAAEgASAHTTP: Cookie =ASP.NET_SessionId=uqnwgpygpf0dh2iwysznat55
    : これらの例に含まれているいくつかの HTTP 変数は、環境によって異なる場合があります。
  2. サーバーが要求を受信し、要求されたデータと共に 200 応答を送信します。クライアントが If-None-Match ヘッダーを送信したため、IIS 6.0 は応答に ETag 応答ヘッダーとヘッダーの値を含める必要があります。この応答の例を次に示します。
    HTTP: Response to Client; HTTP/1.1; Status Code = 200 - OKHTTP: Protocol Version =HTTP/1.1HTTP: Status Code = OKHTTP: Reason =OKHTTP: Content-Length =51622HTTP: Content-Type =text/x-componentHTTP: Last-Modified =Tue, 16 Nov 2004 17:11:48 GMTHTTP: Accept-Ranges =bytesHTTP: ETag ="0222d5bffcbc41:3246"HTTP: Server =Microsoft-IIS/6.0HTTP: X-Powered-By = ASP.NETHTTP: Date =Tue, 27 Sep 2005 12:18:27 GMTHTTP: Data: Number of data bytes remaining = 1202 (0x04B2)
  3. クライアントが応答を受信します。応答の状態は、ブラウザで予期していた HTTP 304 ではなく HTTP 200 です。このため、ブラウザは TCP RST を送信して接続をリセットします。この動作は、Internet Explorer が、サーバーから誤って HTTP 200 状態が送信されたと認識することが原因で発生します。TCP RST の例を次に示します。
    TCP: Control Bits: .A.R.., TCP: Source Port = 0x0747TCP: Destination Port = World Wide Web HTTPTCP: Sequence Number = 3840808344 (0xE4EE1598)TCP: Acknowledgement Number = 3150159894 (0xBBC3A016)TCP: Data Offset = 20 bytesTCP: 0101.... = Data Offset (20 bytes)TCP: ....0000 = Reserved bitsTCP: Flags = 0x14 : .A.R..TCP: ..0..... = No urgent dataTCP: ...1.... = Acknowledgement field significantTCP: ....0... = No Push functionTCP: .....1.. = Reset the connectionTCP: ......0. = No SynchronizeTCP: .......0 = Not the end of the dataTCP: Window = 0 (0x0)TCP: Checksum = 0xF26CTCP: Urgent Pointer = 0 (0x0)
    伝送制御プロトコル (TCP) の詳細については、次の Web サイトを参照してください。
WIA NTLM windows integrated authentication poor performance TCP RST reset etag changenumber filetimestamp MD_ETAG_CHANGENUMBER
プロパティ

文書番号:922703 - 最終更新日: 04/02/2007 05:58:09 - リビジョン: 1.0

Microsoft Internet Explorer 6.0, Microsoft Internet Information Services 6.0

  • kbtshoot kbprb KB922703
フィードバック
body>t>