IIS6.0假死机造成网站无法访问

时间:2017-04-15
错误系统日志:
为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '1003'。有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp ;的帮助和支持中心。
注:ID号,是变化的,可以为任何数据如3124,每次出现这种错误,ID都是不一样的!
服务器表现:IIS6.0假死机,页面打不开,ASP页面,无法执行!网站打不开
解决方法:目前IIS服务器应用程序池设置如下:
右击应用程序池DefaultAppPool,选取属性:
一、回收
1、回收工作进程(分钟):选中,值为1740
2、回收工作进程(请求数目):不选(原先设置为35000)
3、在下列时间回收工作进程:不填
4、消耗太多内存时回收工作进程:全不选。(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,猜的^-^)服务器内存够大,豁出去了给它用。
二、性能
只选中空闲超时20分钟。其他都不选。WEB园最大工作进程数为1(默认)。原来的请求队列限制为4000,现在无限制。
三、运行状况
前两项都起用,是原来的默认设置。启动时间限制90秒,关闭时间限制180秒。
"关闭时间限制180秒"是必须的,因为进程关闭的时间,就是在这儿设置,原来为90秒限制,是默认值,如果进程关闭时间超过90秒,则认为超时,从而出现:进程关闭时间超过了限制日志,所以,适当延长这个时间,可以避免这种错误!
临时解决办法。适合WIN2003系统(IIS6),将每个应用程序设置不同的"应用程序池"即可。比如:新闻系统用一个单独的应用程序池、论坛再用一个单独的应用程序池、下载站点再用一个应用程序池。。。。。。。
通过以上的方法,目前服务器还算稳定,偶尔(一般是N天)"回收"一下有问题的"应用程序池"就OK了。
最近发现,服务器的Web Server总是离奇的死机。查看Log:为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '××××'。为应用程序池 'DefaultAppPool' 提供服务的进程 ID 为 ××××的 worker 进程已经请求回收,因为 worker 进程达到了允许的运行时间限制。
发现这个问题出现的时间刚好是多人在线的情况下发生。用任务管理器观察了一下:发现web service(即W3SVC) 的进程有问题,内存页面错误的值很高。 ms给出的定义: Page Faults/sec 是指处理器中"页面错误"的数量。当一个进程引用不在主存储器"工作集"中的虚拟内存页时,就会发生页面错误。如果该页面在 Standby 列表上,因而已在主存储器中,或者如果另一个与其共享该页面的进程正在使用该页,那么发生"页面错误"时,不会从磁盘读取该页面。
事件类型: 警告
事件来源: W3SVC
事件种类:无
事件 ID: 1013
日期: 2006-10-13
16:01:51
用户: N/A
计算机:
描述:
为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '2552'。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
相信这是由于不正确地设置了回收进程导致,建议关闭下列进程回收设置:
回收工作进程(分钟):1200
回收工作进程(请求数目):10000
启用CPU监视,最大CPU使用率:90%
由于设定了进程自动回收,而当每达到10000次点击,或CPU超过100%,就会强行回收application,导致客户端会出现Sevice Unavailable的错误。(实际上10000次点击,访问量一般的网站,几分钟就够了。) 建议启用计数器日志来监视CPU利用率和asp.net的指标,可以帮助你定位每5~10分钟出现一次是否是上述原因导致。
另外,不要无理由地打开回收工作进程和使用工作进程池。一般理由通常是有不明原因的内存泄露、线程挂起等
IIS日志:
应用程序:ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。'。
关于server 2003+IIS6 出现 'ASP 不正常,因为执行请求的 100% 被挂起
现像如下:
站点无法打开,或者打开很慢.HTML可以打开.重新启动或者回收应用程序池可恢复.但过一段时间又会出现
日志里会有:
ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' reported itself as unhealthy for the following reason: 'ASP unhealthy because 100% of executing requests are hung and 6% of the request queue is full.'.
或者:
ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。'。
解决方法:
1.asp是否正确映射到'C:\WINDOWS\system32\inetsrv\asp.dll'
2.一般来讲,是由于在同属IIS的应用程序池出现了某个站ASP代码错误所致,使得内存耗尽,检查代码本身的问题.可以隔离到单独应用程序池调试
3、减少应用程序池回收时间。默认为:1740。。可设为120(每2小时)
IIS假死的原因:
打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个时间内,达到请求的最高限制,那么就会出现ASP假死的情况,这个就是大型网站出现假死的情况,反而,小型网站确不会出现这样的情况,因为他请求少,流量少,还没达到限制数量。当然要看你的服务器上网站数目而定。
以下是解决方法:
资料一
单个网站解决方法:
把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为了稳定性,再把回收时间设为凌晨5点。
多网站解决方法:
我的服务器目前拉了70个网站左右,我新建六个应用程序池,把每个池回收时间缩小到300分钟,然后再分配每个池10个网站左右(这个分配是要求你的网站访问量所定)如果某个网站,访问量大,就单独给他一个程序池,但是这样做的后果就是需要大内存,一个池现在占用我120M内存左右,反正内存大,没关系,
那么多网站如何分配应用程序池,打开IIS--查看你要分配的网站属性,,查看主目录--在下面你就会看到应用程序池了,分配一个就行了。
 
资料二
大家在使用iis6时..如果装了动网论坛.肯定有出现过iis6假死现像..就是asp网页打开慢..但是iis却是正常的..静态网页打开速度一样..这时候..我一直是重启的方法..查了官方的资料结果没有...据官方资料说..win2003很快就要打这个补丁了..是iis6对access驱动支持不理像..也算是一个bug吧..由于我的服务器虚拟主机多..而且大多支持asp..如果一旦假死就无法运行..在多方面的资料查找下..找到了一个比较简单的方法..具体我测试是通过了..iis6自带数据应用程序池..现在就利用他来解决假死..
首先把bbs设一个单独的目录..然后点击应用程序池..新建应用程序池.输入应用程序池id..
然后把bbs的虚拟目录下面的.就用程序池..选择刚才新建的应用程序池...
然后再回到刚才设好的应用程序池...点击..属性...把回收工作进程数(分钟)及回收工作进程数还有在下列时间回收时间进程勾上..然后在下列时间回收程序池里左边添加..选择一个时间..一般来说..网站到凌晨3点的时候.基本人都很少了..这时回收一下bbs的进程数..就可以解决了iis假死的现像..
当然还可以配置其他信息..比如说iis6的用户名.. 我们可以打开计处机管理..然后打开计算机用户管理..添加一个用户..设置好后..在应用程序池里面..标识..把添加的用户放上去..用用户来测试回收的进程..当然还有..其他配置..其实很简单..只要你好好看一下..就能明白意思...
对于我来说..这种方法可能不太方便..所以我用一个工具来回收应用程序池..这样方便而且快捷..个人用户当然不需要这种工具..我是公司工作..服务器压力挺大..所以都用工具来解决一些问题.所括.iis的备分.及虚拟主机ip的统一修改及端口访问的ip记录..用批处理是一个很简单又方便的方法.所以.把一台服务器做的安全..并不是哪么容易的事..特别是iis..经常去官方网站搜索资料是一个好习惯..还有就是经常性的访问日志..及注册表的用户还有加载运行的程序.及服务也是一个好方法..所以.要学会如何遇到问题如何处理问题!!!!
详细出处参考:http://www.jb51.net/article/13553.htm
如果您检查 C:\Windows\system32\LogFiles\HTTPERR\httperr*.log 文件在父 SUS 服务器, 您会将可能看到 Timer_MinBytesPerSecond 错误或 Timer_ConnectionIdle 错误。 这些是由 IIS 默认设置, 内其元数据库, 定义用于连接到保持活动小通信流速率和最大空闲时间之前连接中断允许。
1) 从 IIS 管理器右键单击 Internet Information Server (IIS) 管理器级别根目录上并转到属性。 选中要启用直接编辑元数据库框。 单击确定。
在记事本中打开 C:\Windows\system32\inetsrv\MetaBase.xml 文件 2)。 要搜索有关 " MinFileBytesPerSec "。 将用于 MinFileBytesPerSec 设置从 240 更改为 0。 执行其他搜索, 该时间将 600 " ConnectionTimeout "。 保存更改并退出。
3) 重新启动 IISAdmin 服务以更改生效。
一、关闭IIS HTTPRERR日志功能
默认情况下,2003服务器会把所有IIS访问错误的记录写入 C:\WINDOWS\system32\LogFiles\HTTPERR 下的 log 文件中,如果访问量比较大,可能一段时间后 日志文件可能会占满C盘空间,导致服务器死机
同时因为要写入所有的IIS访问记录,如果访问量较大会大大增加服务器CPU占用率
关闭HTTPERR的方法
运行里输入 regedit 进入注册表编辑器
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi ces\HTTP\Parameters]
在右边 点鼠标右键 新建dword值 EnableErrorLogging 重新启动服务器就可以了
"EnableErrorLogging"=dword:00000000
重起后,2003不再写入HTTPERR日志文件,可以看到服务器CPU占用明显下降!
二、修改存储目录也不失为一个好的办法
寻找:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\HTTP\Parameters
在下面建立一个字符串值.即REG_SZ
数值名称 命名为: ErrorLoggingDir
数值数据 为你指定的路径 比如 D:\logofilse
上一条:开发者常用的PHP运行环境一键安装包 下一条:解决为应用程序池 提供服务的进程关闭时间超过了限制

相关文章

最新文章