为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制
服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '2068'。的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题。解决方法如下:
Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->右击属性
一、回收
1、回收工作进程(分钟):选中,值为1740
2、回收工作进程(请求数目):不选(原先设置为35000)
3、在下列时间回收工作进程:不填
4、消耗太多内存时回收工作进程:全不选。(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,导致iis假死不响应)
二、性能
只选中空闲超时20分钟。其他都不选。WEB园最大工作进程数为1(默认)。注意web园这里一定要保持默认,如果填写其他超过1的数字就会导致一些网站程序的后台程序打不开或者刷新不停。
原来的请求队列限制为4000,现在无限制。
三、运行状况
前两项都起用,是原来的默认设置。启动时间限制90秒,关闭时间限制180秒。
启动快速失败保护的钩去掉!
为了避免真的遇到很多错误时没有提示,可以不关闭,只是把快速保护的保护范围加大些,例如失败数50次 时间段5分钟 则关闭对应的程序。
“关闭时间限制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种
新建应用程序池,不同的网站引用不同程序池。
Service Unavailable六个原因
原因一:网站超过了IIS连接数
解决办法一:增加IIS连接数
备注一:Windows 2003的操作系统在提示IIS过多时并非像win2000系统提示“链接人数过多,而是提示"Service Unavailable"
原因二:网站超过了IIS资源限制
解决办法二:增加网站的资源
备注二:Winodws2003中网站占用了超过IIS对该网站系统资源的限制后直接提示"Service Unavailable"
原因三:网站的程序发生太多的错误
解决办法三:修改程序错误
备注三:Winodws2003中网站错误太多,就会造成该网站所在的应用程序池出错,这个时候可以在Windows2003的日志中看到“应用程序池 'xxx' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误,这个时候网站就会直接显示"Service Unavailable"
以上三个原因造成的"Service Unavailable",一般现象是出现"Service Unavailable"后,多刷新几次,就可以打开。
原因四:ACCESS引擎错误
解决办法四:重启IIS
备注四:有一些文件造成了ACCESS数据库出现“灾难性故障及“未将对象引用设置到对象的实例的错误
原因四造成的"Service Unavailable",现象是所有该服务器上的使用Access数据库的网站都出现错误,不能访问。
第五种Service Unavailable的情况,刚刚安装的IIS就出现了Service Unavailable,都不在那四种内,于是上服务器查看解决。
因为是新装的IIS服务器,一般来说问题不可能出在iis本身,出现这样的问题一般先从权限方面考虑,先考虑IIS服务的启动帐户没有权限启动IIS。
- 单击“开始——“设置——“控制面板——“管理工具——“服务,打开本地服务管理器,找到IIS Admin Service,双击打开IISADMIN属性,选择“登陆选项卡,显示登陆身份为本地系统帐户,那IISADMIN服务就没有权限问题。
- 单击“开始——“设置——“控制面板——“管理工具——“服务,打开本地服务管理器,找到World Wide Web Publishing Service,双击打开W3SVC服务属性,选择“登陆选项卡,显示登陆身份为本地系统帐户,那W3SVC服务就没有权限问题。(这里为了更加易操作,将打开“服务的操作重新说了一遍)
从这里可以排除了服务启动帐号没有权限启动的问题,下面还是回到终极解决方法中来。
- 现象:单击“开始——“设置——“控制面板——“管理工具——“事件查看器,打开事件查看器,单击“系统,看到很多警告和错误,主要是以下几个:
1)来源是“W3SVC、事件ID为“1002的错误,描述是“应用程序池 'DefaultAppPool' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。
2)来源是“W3SVC、事件ID为“1009的警告,描述是“为应用程序池 'DefaultAppPool' 提供服务的进程意外终止。进程 ID 是 '1756'。进程退出代码是 '0xffffffff'。
3)来源是“DCOM、事件ID为“10016的错误,描述是“应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为{A9E69610-B80D-11D0-B9B9-00A0C922E750})的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。 - 分析:通过这几个事件可以判定应该是第三个事件ID为“10016的DCOM错误引起了事件ID为1009的应用程序池意外退出,从而造成事件ID为1002的应用程序池被自动禁用的W3SVC错误,下面就来解决。
- 问题确定:通过DCOM错误的提示,原因是NETWORK SERVICE用户没有权限启动{A9E69610-B80D-11D0-B9B9-00A0C922E750},
找到了原因,下面就来解决这个问题
- 先查找这个CLSID{A9E69610-B80D-11D0-B9B9-00A0C922E750}对应的服务,单击“开始——“运行,输入“regedit启动注册表编辑器,在注册表编辑器的左侧树中选中“我的电脑,再使用快捷键“Ctrl+F打开查找对话框,在“查找目标后输入刚才的CLSID:“{A9E69610-B80D-11D0-B9B9-00A0C922E750},“查看的复选框中只保留“项,回车执行查找任务。
- 查找到该CLSID,在注册表编辑器右侧显示了该CLSID的信息,从该信息得知,该CLSID对应的服务是IIS Admin Service,现在就可以确定NETWORK SERVICE用户没有权限启动IIS Admin Service。
- 打开“开始-“控制面板-“管理工具-“组件服务-“计算机-“我的电脑-“DCOM配置选项,找到“IIS Admin Service,右健选择“属性,找到“安全,在“启动和激活权限中编辑“自定义,添加帐号“NETWORK SERVICE , 赋予“本地启动和“本地激活的权限,重新启动IIS。
- 重启IIS,再次打开网页,现在已经正常显示了。