Назад | Перейти на главную страницу

Устранение неполадок ARR 502.3 / трассировка WinHttp на Server 2012

У меня такой сценарий:

3 виртуальных сервера Windows Server 2012, все с IIS 8:

Я периодически получаю 502 3 12002 ошибки.

Следуя этому руководству http://www.iis.net/learn/extensions/troubleshooting-application-request-routing/troubleshooting-502-errors-in-arr

Я определил, что мне нужно с помощью netsh отслеживать поставщиков WinHttp / WebIO, чтобы получить реальный код ошибки, сопоставленный с кодом ошибки 12002.

Я провожу трассировку, как указано в статье:

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...

Я, конечно же, не получил ничего достаточно подробного, что помогло бы мне понять, почему возникают таймауты.

Есть ли причина, по которой Server 2012 не отслеживает API WinHttp до необходимого мне уровня?

Спасибо

В соответствии с http://support.microsoft.com/kb/193625и упомянутый на странице, на которую вы ссылаетесь, код ошибки win32 12002 указывает на тайм-аут. ARR имеет встроенный тайм-аут 30 секунд, и если какой-либо запрос занимает больше 30 секунд, ARR будет тайм-аут и выдаст 502,3. Если это произойдет, вы сможете просмотреть журналы IIS на своем сервере ARR и увидеть, что запросы 502.3 занимают 30 секунд (или вы можете просто рассчитать время запроса вручную).

Если 30-секундный тайм-аут по умолчанию для вас слишком короткий, вы можете вручную изменить его в файле applicationatoinHost.config под элементом. По умолчанию свойство тайм-аута отсутствует. Пример элемента с таймаутом, равным 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>

Как всегда, вы должны сделать резервную копию этого файла перед его редактированием.