iis错误日志里面显示 - - - - - Timer_ConnectionIdle 

这些天发现公司的网站多了很多httperror,开始检查IIS log了,发现 IIS 里面很多Timer_ConnectionIdle和Timer_MinBytesPerSecond的错误,到网络上google了一下,常见说法是说错误是因为IIS的设置不当引起的,是因为连接超时时间设置太小,解决方法是设置连接超时为600秒,把MinFileBytesPerSec的设置从240修改到0(相当于关掉该设置)。觉得这些解决方法都有问题,假如车辆防盗警报经常响,正确的解决方法是看看有谁常来打你车子的主意,或者把车子放在更安全的地方,而绝对不是关掉警报。

因为HTTP服务需要占用TCP连接,而TCP连接时是需要占用系统资源的,而且IIS为每个连接也需要分配相应的资源。目前的主机能够处理上万的连接就可以说是软硬件设计都很不错了(可以参见C10K )。假如恶意人员通过一台或者多台机器发起大量的连接,而不请求内容(这样不需要消耗多少***机器的带宽),就可以大量消耗服务器资源而达到拒绝服务的目的。

     所以 IIS 需要关闭长时间非活动的连接,这个就是Timer_ConnectionIdle 的错误由来。

     原来以为***者可以给服务器故意缓慢的发送和接收内容而消耗服务器的资源,这样可以避免服务器对于Timer_ConnectionIdle 的保护,相应的IIS的防范就是 MinFileBytesPerSec 设置,MinFileBytesPerSec 属性通过以最小的数据量保持连接,来禁止恶意的或软件工作不正常的客户端消耗资源。如果吞吐量低于 MinFileBytesPerSec 设置的值,则终止连接。LOG里面就会显示Timer_MinBytesPerSecond错误(一些Timer_MinBytesPerSecond错误是因为 windows 2003 的http.sys错误引起的,解决方式是;

1.单击开始,单击运行,键入cmd,然后单击确定

2.在命令提示符下,键入下面的命令,然后按 ENTER 键: 

 cscript adsutil.vbs get w3svc/MinFileBytesPerSec 

     此时将显示当前每秒的最小字节数 

减少 MinFileBytesPerSec 属性值

为减少对每秒 50 个字节的MinFileBytesPerSec属性,请执行以下步骤:

 

cscript adsutil.vbs set w3svc/MinFileBytesPerSec 50

 

禁用 MinFileBytesPerSec 属性

 

cscript adsutil.vbs set w3svc/MinFileBytesPerSec 0

参考网站(http://support.microsoft.com/kb/919797   http://support.microsoft.com/kb/919797/en-us )