iis的应用程序池为啥会自动停止

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iis的应用程序池为啥会自动停止相关的知识,希望对你有一定的参考价值。

一、2003应用程序池自动死了,不能恢复了,一直出现 Service Unavailable 常见方法如下。

1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。(所以现在的IIS假死与这个关系不是很大)

2:从IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。你鼠标右键启动网站又会自动恢复。 这个原因:大概是以下几个因数造成的。

(1):你限制了应用池的资源,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作。
出现上面这个情况解决方法:1:不限制CPU资源,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,服务器都会被拉死,你可能都无法操作服务器。)2:在超过资源那里选择关闭,这个关闭默认是失败5次,90秒内恢复,一般默认就可。网站能自动恢复,这个关闭:不是永久关闭,意思是超过资源关闭,然后在某时间内自动恢复池。不操作就是不恢复,这个是很多人的误区。

(2):内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,如果你设置了这个。那么网站访问量大了 也会出现假死,所以不建议设置这里。默认就可。

3:就是服务器自身内存太小,网站运行当然需要使用到内存了,当内存不够的时候应用池也会死掉变成禁用。那么只有等内存全部释放出来才能恢复应用池了。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个可是吃内存得大户啊,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。

4:就是ACCESS数据库太大或查询太多,这个也会出现把IIS拉死,解决方法;修复ACCESS数据库,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯、动易等cms;pjblog、zblog等博客程序,都支持生成静态功能.

5:不同网站用不同应用池:根据你自己实际情况而定,站点大的最好独立一个应用池,限制他的资源超过了自动回收,看上面(1)讲到的,这样就不影响其他站点。中型站点:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站。

6:设置回收时间:很多人以为设置回收池越短越好,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担,当服务器比较繁忙的时候,有可能导致其他应用池死。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,共用的不建议设置太短。

7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了,按照 6点设置吧。 不要设置什么20分、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些。

8:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”;
查看iis的应用程序池,状况提示为:未指定错误,同时应用程序池自动停止运行;
参考技术A 大概生病了

为啥应用程序池会自动停止? [关闭]

【中文标题】为啥应用程序池会自动停止? [关闭]【英文标题】:Why does the application pool automatically stop? [closed]为什么应用程序池会自动停止? [关闭] 【发布时间】:2013-08-03 16:36:48 【问题描述】:

我正在使用 IIS 7.0 对我的 MVC Internet 应用程序进行性能测试

有时应用程序池停止并且我在浏览器中收到“服务不可用”的错误消息。然后我必须重新启动池。

为什么池会自动停止,我该如何解决这个问题?

更新 我的日志文件有:“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll 从注册返回错误。数据就是错误。”

【问题讨论】:

相关:***.com/questions/37475214/… 【参考方案1】:

应用程序池在无法从错误/崩溃中恢复时停止。查看 Windows 日志 > 应用程序 下的事件查看器以查看导致崩溃的异常。 Source 列将提及 ASP.NET 4.0.30319.0

【讨论】:

我的日志文件有:“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll 注册时返回错误。数据就是错误。” 您可能应该为此打开一个后续问题。一些快速搜索表明这可能是 .NET Framework 或 IIS 中的错误安装或配置。 更多详情?我找不到这个日志。 @DanielGrover 我添加了一个屏幕截图来帮助您找到日志消息。 谢谢!我现在找到了!【参考方案2】:

好吧,我也遇到了这个问题,这就是我要做的。

1) 打开 IIS。

2) 右键单击​​ Web 应用程序的应用程序池,然后选择“高级设置”。

3) 将“快速故障保护”->“启用”设置为 False。

如果是这样,如果在指定时间段内有指定数量的工作进程崩溃,应用程序池将关闭。默认情况下,如果 5 分钟间隔内发生 5 次崩溃,应用程序池将关闭。

我在此链接中阅读了答案 [https://sharepoint.stackexchange.com/questions/22885/application-pool-is-auto-stopped-when-browse-web-application-in-iis7]

希望这对其他人有所帮助。

【讨论】:

在看到 Stijn 的建议是修复错误的页面后,遇到了同样的问题,对我来说是长期解决方案。短期解决方案,将尝试此池设置。谢谢。【参考方案3】:

嗯,我也有类似的问题,只是另一个模块。

查看事件日志后,检查 system32\inetsrv 文件夹中是否存在所需的模块。如果不存在,则删除/注释 globalModules 部分的 system32\inetsrv\config\applicationHost.config 中的相应行。也许您将不得不从您的 IIS 应用程序池中删除一些模块(事件查看器也不会找到和指向这些模块)。

这对我有帮助,在此之前我尝试了很多东西,包括多次重新安装 IIS 和 .NET Framework。

【讨论】:

以上是关于iis的应用程序池为啥会自动停止的主要内容,如果未能解决你的问题,请参考以下文章

为啥应用程序池会自动停止? [关闭]

为啥我的win2003 的iis会自动停止服务?

IIS应用程序池自动停止,报503错误解决方法

应用程序池在 IIS 7 中自动停止

IIS6.0 IIS7.5应用程序池自动停止怎么办

IIS应用程序池服务停止,如何解决?