IIS:应用程序池中的服务器错误、超时时间已到

网站前台现象:页面报错


问题现象:在服务器日志有:

【为应用程序池 '×××' 提供服务的进程关闭时间超过了限制。进程 ID 是 '7480'。】 
提示的ID可以有很多,例如3844、8004、6124等数字。
发现很多类似的问题,引发的根本原因未知,但导致出现此种情况的直接原因为IIS失败保护!


例如:设置失败保护为每5分钟失败数超过5次则关闭应用程序池,就会出现停止服务的情况,此时提示日志为:
应用程序池 '×××' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。


解决办法如下:

第1种方法:
Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->高级属性->快速故障防护->已启用(false)
为了避免真的遇到很多错误时没有提示,可以不关闭,只是把快速保护的保护范围加大些,例如每5分钟失败50次则关闭对应的程序池

如图:


有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp ;的帮助和支持中心。
注:ID号,是变化的,可以为任何数据如3124,每次出现这种错误,ID都是不一样的!


设置应用程序池高级属性中的回收参数
1、回收工作进程(请求时间间隔):选中,值为1740
2、回收工作进程(请求限制):0
3、在下列时间回收工作进程:不填
4、消耗太多内存时回收工作进程:全不选。(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,导致iis假死不响应)

如图:

设置应用程序池高级属性中的回收参数
只选中空闲超时20分钟。其他都不选。WEB园最大工作进程数为1(默认)。注意web园这里一定要保持默认,如果填写其他超过1的数字就会导致一些网站程序的后台程序打不开或者刷新不停。

启动时间限制90秒,关闭时间限制180秒。

“关闭时间限制180秒”是必须的,因为进程关闭的时间,原来为90秒限制,是默认值,如果进程关闭时间超过90秒,则认为超时,从而出现:进程关闭时间超过了限制 日志,所以,适当延长这个时间,可以避免这种错误

如图:


第2种方法:

原因:独立进程的 内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理

解决方法:
1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC
2. 在Parameters键下新建一个DWORD项,名字为:UseSharedWPDesktop 值为1 重启IIS


第3种

问题已解决,发现是数据库连接无法释放,不知道是什么原因,同样的代码在本地就是好的,在服务器端就有问题,最后在连接串里加入以下语句解决问题.

Pooling=true; MAX Pool Size=512;Min Pool Size=50;Connection Lifetime=30


第4种

新建应用程序池,不同的网站引用不同程序池。