IIS 8:随机“(503)服务器不可用服务器太忙”错误

时间:2016-06-08 17:02:04

标签: asp.net iis

我有一台运行Windows Server Core 2012 R2的IIS服务器。此服务器将替换我们已有的另一台服务器并扮演相同的角色。服务器托管80个ASP.Net网站,所有站点都在同一个应用程序池中。队列限制为1000(默认值)。

我们有自制的监控程序,定期向每个网站的/login.aspx页面发送请求顺序以检查它是否已启动。

在这台新服务器上,监控程序经常遇到(503) Server Unavailable Server Too Busy错误。

  • 发生错误时,事件日志中没有记录任何有关IIS或ASP.Net错误的信息。
  • 我知道工作进程不会崩溃或被回收(w3wp保持相同的PID)。
  • 使用失败的请求跟踪我找不到任何有价值的内容(记录失败的请求但我在日志详细信息中找不到原因)。
  • 使用Perfmon我确认排队请求的数量仍然非常低。

如果我将监控程序修改为在每个站点之间休眠1秒,那么我就不会再收到错误了。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我们找到了原因。不同之处在于我们的新IIS服务器提供来自UNC路径的内容。使用UNC时,控制ASP.NET监视文件和目录的方式的默认设置效率很低。

.Net 4.0:注册表

不久前,微软发布了一个修补程序来支持另一种监视策略,但是他们没有将其作为默认设置。

参考:https://support.microsoft.com/en-us/kb/911272。您不需要在最新版本的Windows上安装此修补程序。

您可以通过将注册表项HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\FCNMode更改为2来更改文件更改通知的行为。

.Net 4.5:配置设置

配置中现在有一个设置来控制文件更改通知的行为。

参考:https://msdn.microsoft.com/en-us/library/system.web.configuration.fcnmode(v=vs.110).aspx

在我们的案例中,我们使用.Net 4.0并设置注册表项解决了问题。

然而,还有一个谜。为什么低效的文件更改通知会导致" 503错误"被发送到客户端而没有任何Web服务器日志中的问题?如果有人有解释,我真的很感兴趣。