首页 windows正文

解决IIS进程退出代码是 '0x80' 的错误

chenzj windows 2017-10-21 04:10:32 2 0
事件日志记录如图


原因:
CAUSE
Together with each worker process that IIS creates under a separate identity, the system creates a new desktop object by allocating memory from the configured desktop heap. This issue occurs because, when that heap has been exhausted, IIS cannot create more worker processes. Clients then receive the "service unavailable" error message in their Web browsers when they try to visit Web sites that those application pools host.
独立进程的 内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理

解决方法:
警告:需要修改服务器的注册表,请修改前备份相关键值
add the UseSharedWPDesktop registry key to your computer that is running IIS. This registry key permits all worker processes to run in one shared desktop, regardless of their worker process identities.
To add the UseSharedWPDesktop registry key:

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


M$关于此键值描述:


UseSharedWPDesktop
注册表路径:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters
数据类型:REG_DWORD
默认值: 0
范围: 0 - 1
如果您正使用唯一标识设置应用程序池,那么根据服务器上的应用程序和内存资源,将会达到大约 60 个应用程序池的上限。某些分配了单个新登录会话的系统资源存在一定的限制。这表明可以有 60 个进程以不同的帐户同时运行。IIS 6.0 支持在单个共享的工作站和桌面中运行这些进程,所需的成本为在所有各方之间共享单个用户会话的单个封装。要扩展到 60 个应用程序池以上并共享单个桌面,可将 UseSharedWPDesktop 更改为 DWORD 值 1。更改此注册表项之后,应当可以扩展到上百个应用程序池已及上百个同时运行的工作进程。

如果你服务器上的NET网站过多,可以用这个方法来处理.如果不是,请继续往下看。

为应用程序池 '×××' 提供服务的进程关闭时间超过了限制。进程 ID 是 '7480'。
提示的ID可以有很多,例如3844、8004、6124等数字。
在百度上搜了下,发现很多类似的问题,引发的根本原因未知,但导致出现此种情况的直接原因为IIS失败保护!
例如设置失败保护为每5分钟失败数超过5次则关闭应用程序池,就会出现停止服务的情况,此时提示日志为:
应用程序池 '×××' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。
解决办法如下:
Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->属性->运行状态->启动快速失败保护的钩去掉!
为了避免真的遇到很多错误时没有提示,可以不关闭,只是把快速保护的保护范围加大些,例如每5分钟失败50次则关闭对应的程序池


为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制。进程 ID 是 '1003'。 有关更多信息,请参阅在 https://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秒,则认为超时,从而出现:进程关闭时间超过了限制 日志,所以,适当延长这个时间,可以避免这种错误!

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

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

另外,如果你的进程池老是自动关闭,看看你的system32的文件夹是否有USER的权限
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

发表评论

评论列表(0人评论 , 2人围观)
☹还没有评论,来说两句吧...