我有一台运行Windows Server Core 2012 R2的IIS服务器。此服务器将替换我们已有的另一台服务器并扮演相同的角色。服务器托管80个ASP.Net网站,所有站点都在同一个应用程序池中。队列限制为1000(默认值)。
我们有自制的监控程序,定期向每个网站的/login.aspx
页面发送请求顺序以检查它是否已启动。
在这台新服务器上,监控程序经常遇到(503) Server Unavailable Server Too Busy
错误。
如果我将监控程序修改为在每个站点之间休眠1秒,那么我就不会再收到错误了。
有什么想法吗?
答案 0 :(得分:1)
我们找到了原因。不同之处在于我们的新IIS服务器提供来自UNC路径的内容。使用UNC时,控制ASP.NET监视文件和目录的方式的默认设置效率很低。
不久前,微软发布了一个修补程序来支持另一种监视策略,但是他们没有将其作为默认设置。
参考:https://support.microsoft.com/en-us/kb/911272。您不需要在最新版本的Windows上安装此修补程序。
您可以通过将注册表项HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\FCNMode
更改为2
来更改文件更改通知的行为。
配置中现在有一个设置来控制文件更改通知的行为。
参考:https://msdn.microsoft.com/en-us/library/system.web.configuration.fcnmode(v=vs.110).aspx
在我们的案例中,我们使用.Net 4.0并设置注册表项解决了问题。
然而,还有一个谜。为什么低效的文件更改通知会导致" 503错误"被发送到客户端而没有任何Web服务器日志中的问题?如果有人有解释,我真的很感兴趣。