【转载】关于IIS进程池出错终止的故障排查手记

http://0e2.net/post/977.html 

 我负责维护的一台服务器上一个网站最近经常出现进程池出错终止的故障,报“Service Unavailable”错误,查事件日志为:

为应用程序池 'XXX' 提供服务的进程意外终止

为应用程序池 'XXX' 提供服务的进程在与 World Wide Web Publishing 服务通信时遇到致命错误。进程 ID 为 '196'。数据字段包含错误号。

应用程序池 'XXX' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误

查C:\WINDOWS\system32\LogFiles\HTTPERR目录下日志记录,见对应进程池大量Timer_ConnectionIdle和Timer_MinBytesPerSecond错误提示,一般来说Timer_ConnectionIdle错误提示表明出错前服务器IIS存在大量未关闭的活动连接,而服务器对于Timer_ConnectionIdle的保护措施是MinFileBytesPerSec 设置,MinFileBytesPerSec 属性通过以最小的数据量保持连接,来禁止恶意的或软件工作不正常的客户端消耗资源。如果吞吐量低于 MinFileBytesPerSec 设置的值,则终止连接。LOG里面就会显示Timer_MinBytesPerSecond错误(一些Timer_MinBytesPerSecond错误是因为 windows 2003 的http.sys错误引起的,解决方式是打上最新 ServicePack : http://support.microsoft.com/kb/919797 http://support.microsoft.com/kb/919797/en-us)。
既然Timer_ConnectionIdle表明出错前服务器存在大量活动的IIS连接,那就有必要检查IIS日志,经查,IIS日志中存在大量的c-ip cs(User-Agent)为

202.104.150.77 sawsi(+http://www.sawsi.com/)

的记录,这个
http://www.sawsi.com/
是什么东西?在28万条的日志访问记录中,居然占5万之多,访问之频繁令我咂舌。经查,
http://www.sawsi.com/
是一个视频引擎,所做的工作就是把土豆啊,优酷,56等站的东西搜到它的数据库,然后用框架的形式作为自己网站的内容。
这个傻逼网站就是因此派出自己的蜘蛛一天不到在我维护的那台服务器的一个网站上巡回了5万次之多。
以前见过有人骂百度的蜘蛛的,但那至少是有意义的蜘蛛,这个傻逼网站的蜘蛛简直就是不可理喻,我网站上一没有视频,二没有图片,你丫天天跑来干什么?
造成Timer_ConnectionIdle错误的原因除了这个傻逼蜘蛛的因素外,还有一个原因是当初这个网站设计的时候数据库连接没有及时关闭,以及使用404文件生成静态页的结构。那么解决方法自然是偱因施治了。除了屏蔽掉蜘蛛的访问、及时关闭数据库连接外,还可以把服务器IIS连接超时改短,这样IIS可以及时关闭连接,减少服务器负荷。而改长也可以,设置连接超时为600秒,把MinFileBytesPerSec的设置从240修改到0(相当于关掉该设置)。
原文地址:https://www.cnblogs.com/chinaontology/p/2233864.html