IIS应用程序池的设置问题解决IIS 假死状态
一、IIS应用程序池设置导致IIS假死的原因
- 资源限制方面
- 可能限制了应用池的资源过小,包括内存使用等,或者服务器自身内存太小,这会导致IIS假死状态。例如,当独立进程的内存堆消耗完了,IIS不能创建更多的进程工作空间来处理就会出现假死。
- 回收设置方面
- 不合适的回收设置可能引发问题。如回收工作进程(请求数目)、在特定时间回收工作进程、消耗太多内存时回收工作进程等设置不当,在访问量高的时候可能引发服务器响应问题,导致IIS假死不响应。
二、解决IIS假死状态的方法
- 调整应用程序池属性中的回收设置
- 回收工作进程(分钟):选中,值为1740。
- 回收工作进程(请求数目):不选(如果原先设置为35000等情况)。
- 在下列时间回收工作进程:不填。
- 消耗太多内存时回收工作进程:全不选。这几项设置可能避免在访问量高的时候强制回收进程可能引发的服务器响应问题,导致IIS假死不响应。
- 性能相关设置
- 只选中空闲超时20分钟,其他都不选。WEB园最大工作进程数为1(默认),注意web园这里一定要保持默认,如果填写其他超过1的数字就会导致一些网站程序的后台程序打不开或者刷新不停。原来的请求队列限制为4000,现在可设置为无限制。
- 运行状况相关设置
- 运行状况前两项都启用(是原来的默认设置),启动时间限制90秒,关闭时间限制180秒。并且要去掉启动快速失败保护的钩(如果为了避免真的遇到很多错误时没有提示,可以不关闭,只是把快速保护的保护范围加大些,例如失败数50次时间段5分钟则关闭对应的程序)。关闭时间限制180秒是必须的,因为进程关闭的时间,原来为90秒限制,如果进程关闭时间超过90秒,则认为超时,出现进程关闭时间超过了限制日志,适当延长这个时间,可以避免这种错误。
- 注册表设置(针对独立进程内存耗尽情况)
- 原因如果是独立进程的内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理。解决方法是:
- 找到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC。
- 在Parameters键下新建一个DWORD项,名字为:UseSharedWPDesktop,值为1,然后重启IIS。
- 原因如果是独立进程的内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理。解决方法是:
- 数据库连接相关(如果是数据库连接无法释放问题)
- 如果发现是数据库连接无法释放(同样的代码在本地正常,在服务器端有问题),在连接串里加入以下语句解决问题:Pooling = true;MAXPoolSize = 512;MinPoolSize = 50;ConnectionLifetime = 30。
- 打补丁
- 如果是IIS6.0且未打SP1补丁的时候会出现假死问题,但现在微软在自动更新里面出补丁了,打好最新补丁后一般不会出现此问题。
本篇文章所含信息均从网络公开资源搜集整理,旨在为读者提供参考。尽管我们在编辑过程中力求信息的准确性和完整性,但无法对所有内容的时效性、真实性及全面性做出绝对保证。读者在阅读和使用这些信息时,应自行评估其适用性,并承担可能由此产生的风险。本网站/作者不对因信息使用不当或误解而造成的任何损失或损害承担责任。
