首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

解决IIS无响应假死状态

作者:  时间: 2011-04-24

1 查看服务器iis的w3wp.exe对应的应用程序池

 
在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
今天研究了一下,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存
一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
3、到iis中察看该应用程序池对应的网站,就ok了


2 iis假死状态解决"错误应用程序 w3wp.exe,版本 6.0.3790.3959,错误模块 php5ts.dll,版本"
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秒,则认为超时,从而出现:进程关闭时间超过了限制   日志,所以,适当延长这个时间,可以避免这种错误!



为应用程序池 '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种

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

应用程序池 与 W3WP.exe 进程的对应关系 
http://blog.joycode.com/ghj/archive/2008/07/30/115206.aspx

W3WP.exe应用程序错误:
http://blog.sina.com.cn/s/blog_4522f0b80100de7w.html

健全的IIS安全配置:
http://www.suixie.com/ruanjian/2007-07-18/176.html

分享一下iis应用程序池设置
http://niker.cn/post/232.html

http://blog.cnknow.com/blogview.asp?logID=755