提供静态内容的IIS随机提供503

我们的图片服务器出现了一些问题。

这是运行IIS 7.5的Win 2008,它只提供静态内容:图像。

它已经运行了很长一段时间,直到最近当我们禁用输出caching时,我们注意到它启用意味着它发送了无caching主机头到客户端(迫使他们每次从服务器获取图像)

我们已经读了很多关于它的内容,似乎IIS正是这样工作的 – 无论是使用输出caching还是使用caching主机头。

无论如何,已经禁用了输出caching,我们现在经历了5分钟的随机间隔,其中所有的请求都得到503服务不可用。 在此期间,“文件caching”性能计数器错开(既不增加也不减less),并且在这段时间之后所有的caching都被刷新。

您可能会发现我谈论caching很奇怪,因为我们禁用了输出caching。

事情是我们改变了registry中的ObjectTTL参数,所以我们caching文件3分钟(这工作得很好,我们的磁盘I / O显着下降)

所以,即使输出caching被禁用,我们仍然caching大量的文件 – 如果我们可以摆脱随机503这将是完美的: – D

在这503个间隔期间,我们在Windows事件日志中没有收到任何消息,所以我们很难确定要做什么。

任何想法都非常欢迎:-)

也许问题是RequestQueue / ConcurrentRequest限制。 考虑在这个堆栈溢出问题接受的答案的设置:

通用处理程序(.ashx)实现IHttpAsyncHandler的IIS 7.0 503错误

要消除所需的503个错误3个不同的configuration更改:

machine.config中:

<configuration> ... <system.web> ... <processModel enable="true" requestQueueLimit="100000"/> 

IISpipe理器> ApplicationPools>高级设置

 Queue Length : 65535 

最后(谜题的缺失部分), 命令行:

 appcmd.exe set config /section:serverRuntime /appConcurrent 

我们终于解决了这个问题。

这显然是由IIS检查子目录中的web.config更改造成的。

通过在applicationhost.config文件中设置allowSubDirConfig =“false”,问题就停止了。

这有点奇怪,因为我们没有超过1个web.config文件,它在项目的根目录 – 如果它工作,为什么抱怨: – D