在服务器2012年ARR故障排除502.3 / WinHttp跟踪

我有以下情况:

3个Windows Server 2012虚拟服务器,全部使用IIS 8:

  • 1服务器与应用程序请求路由3
  • 2服务器与ARR服务器路由到的Web应用程序

我得到间歇502 3 12002错误。

遵循本指南http://www.iis.net/learn/extensions/troubleshooting-application-request-routing/troubleshooting-502-errors-in-arr

我已经确定我需要跟踪使用WinHttp / WebIO提供程序的netsh来获取映射到12002错误代码的真实错误代码。

我按照文章的build议运行轨迹:

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

当分析netsh痕迹的输出时,我没有得到文章所build议的信息水平。 具体来说,我只在使用netmon查看的跟踪中获得以下types的条目:

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

我当然没有得到足够详细的内容,这将帮助我理解为什么会得到任何超时。

有什么理由为什么Server 2012不会跟踪WinHttp API到我需要的级别?

谢谢

根据http://support.microsoft.com/kb/193625 ,并在您链接到的页面中提到,12002的win32错误代码表示超时。 ARR的内置时间超过30秒,如果有超过30秒的请求,ARR将超时并且丢弃502.3。 如果发生这种情况,您应该能够查看您的ARR服务器上的IIS日志,并查看502.3需要30秒的请求(或者您可以手动计时请求)。

如果默认的30秒超时是短暂的,那么您可以在元素下的applicatoinHost.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> 

与往常一样,您应该在编辑之前备份此文件。