web-dev-qa-db-ja.com

サーバー2012でのARRトラブルシューティング502.3 / WinHttpトレース

次のシナリオがあります。

3つのWindowsServer 2012仮想サーバー、すべてIIS 8:

  • アプリケーションリクエストルーティング3を備えた1台のサーバー
  • ARRサーバーがルーティングするWebアプリケーションを備えた2台のサーバー

断続的な502312002エラーが発生します。

このガイドに従う http://www.iis.net/learn/extensions/troubleshooting-application-request-routing/troubleshooting-502-errors-in-arr

12002エラーコードにマップされている実際のエラーコードに到達するには、Netshを使用してWinHttp/WebIOプロバイダーをトレースする必要があることを確認しました。

記事が示唆するように、トレースを実行します。

netsh trace start scenario=internetclient capture=yes persistent=no level=verbose tracefile=c:\temp\net.etl

Netshトレースの出力を分析するとき、記事が示唆するレベルの情報が得られません。具体的には、netmonを使用して表示されたトレースで次のタイプのエントリのみを取得します。

WINHTTP_MicrosoftWindowsWinHttp:Stopping WorkItem Thread Action...
WINHTTP_MicrosoftWindowsWinHttp:Starting WorkItem Thread Action...
WINHTTP_MicrosoftWindowsWinHttp:Queue Overlapped IO Thread Action...

タイムアウトが発生する理由を理解するのに役立つ詳細な情報は確かに得られません。

Server2012がWinHttpAPIを必要なレベルまでトレースしない理由はありますか?

ありがとう

1
nachojammers

http://support.Microsoft.com/kb/193625 によると、リンク先のページに記載されているように、12002のwin32エラーコードはタイムアウトを示しています。 ARRには30秒の組み込みタイムアウトがあり、要求に30秒以上かかる場合、ARRはタイムアウトして502.3をスローします。これが発生した場合は、ARRサーバーのIISログを調べて、502.3の要求に30秒かかっていることを確認できます(または、手動で要求の時間を計ることもできます)。

デフォルトの30秒のタイムアウトが短すぎる場合は、要素の下のapplicatoinHost.configファイルで手動で変更できます。デフォルトでは、timeoutプロパティはありません。タイムアウトが1分に指定されている要素の例は次のとおりです。

<webFarms>
    <webFarm name="Example Farm" enabled="true">
        <server address="webServer1" enabled="true" />
        <server address="webServer2" enabled="true" />
        <applicationRequestRouting>
            <protocol timeout="00:01:00" />
        </applicationRequestRouting>
    </webFarm>
    <applicationRequestRouting>
        <hostAffinityProviderList>
            <add name="Microsoft.Web.Arr.HostNameRoundRobin" />
            <add name="Microsoft.Web.Arr.HostNameMemory" />
        </hostAffinityProviderList>
    </applicationRequestRouting>
</webFarms>

いつものように、編集する前にこのファイルをバックアップする必要があります。

1
pkeenan