当前位置: 代码网 > 服务器>服务器>win服务器 > IIS应用程序池崩溃的解决方案

IIS应用程序池崩溃的解决方案

2024年05月12日 win服务器 我要评论
iis是微软开发的web服务器软件,被广泛用于windows平台上的网站托管。在使用iis过程中,可能会遇到应用程序池崩溃的问题,原因可能有很多,包括代码错误、资源不足、进程冲突等。本文将为大家介绍i

iis是微软开发的web服务器软件,被广泛用于windows平台上的网站托管。在使用iis过程中,可能会遇到应用程序池崩溃的问题,原因可能有很多,包括代码错误、资源不足、进程冲突等。本文将为大家介绍iis应用程序池崩溃的问题分析和解决方案。如果您在iis的events日志下观察到以下任一事件,那么本文适合您。

遇到这个问题是我在升级项目版本的时候,升级后的版本网页功能虽然可以正常使用,但每隔几分钟程序池就会忽然崩溃,导致访问503报错,我登陆iis管理器查看,该应用挂载的应用池状态自动变为了stopped。

iis 000 1024x486 - iis应用程序池崩溃的解决方案

一、确认程序池崩溃原因

a) 满足下面两个特征的iis程序池崩溃是本文可以解决的,其崩溃原因是应用程序内部反复报错,一般是短时间超过五次,导致iis自动关闭程序池。
b) 如果不满足这两个条件,那就不是程序报错导致的,后面的内容也就不用看了。

1、应用池崩溃后,网页访问提示503。

2、查看iis的events里有无错误。

通常报错为:

a process serving application pool ‘classic .net apppool’ suffered a fatal communication error with the windows process activation service. the process id was ‘3328’. the data field contains the error number.

我在server manager>iis>events下查看,这里是有报错的。

iis 001 1024x671 - iis应用程序池崩溃的解决方案

二、查找问题来源并修复

1、下载 debugdiag 插件

这里我们下载一个插件 debug diagnostic tool (点击此处跳转下载页面),通过这个插件,我们可以在iis的错误事件发生时捕获更加详细,应用级别的日志。

iis 002 1024x611 - iis应用程序池崩溃的解决方案

点击download下载,选择32还是64位,下载msi镜像,下载成功之后安装。

iis 003 - iis应用程序池崩溃的解决方案

2、配置 debugdiag 的断点信息

安装成功之后我们打开安装好的 debugdiag 2 analysis 程序,按照下面步骤添加断点。

选择“crash (崩溃)”规则。

iis 004 - iis应用程序池崩溃的解决方案

选择“a specific iis web application pool (特定 iis web 应用程序池)”

iis 005 - iis应用程序池崩溃的解决方案

选择崩溃的特定应用程序池。

iis 006 - iis应用程序池崩溃的解决方案

选择“breakpoint (断点)”

iis 006 - iis应用程序池崩溃的解决方案

点击“添加断点”

iis 008 - iis应用程序池崩溃的解决方案

单击 breakpoint 下的“ntdll!zwterminateprocess”,将其选为 breakpoint expression。将 action type 更改为“full userdump”并将 action limit 设置为 10,然后单击 ok。

iis 009 - iis应用程序池崩溃的解决方案

点击保存并关闭。
点击下一步以激活断点。

点击“next”,配置日志路径

iis 010 - iis应用程序池崩溃的解决方案

单击“finish”以激活规则。

您现在会看到崩溃规则处于活动状态并且“userdump count”为0。一旦问题发生,转储计数就会增加,并会生成相应的转储文件。

3、复现崩溃场景,查看问题日志

我们复现了出现问题的场景,iis应用池再次崩溃,网页503无法访问,debugdiag tool的“userdump count”变为了10,表示程序池崩溃前程序已经出错了10次。

iis 012 1024x698 - iis应用程序池崩溃的解决方案

我们根据刚刚配置的日志路径,找到对应这个问题应用池的日志文件。

iis 013 - iis应用程序池崩溃的解决方案

打开日志文件,我们看到了应用运行中的种种报错,找到反复高频报错的点,然后修复即可。

iis 014 1024x756 - iis应用程序池崩溃的解决方案

我这里有两个异常,一个是ibatis映射的对象属性没有对上,导致的工厂加载时报错。另一个是空指针异常,因为有个全局变量在全局线程里反复调用,但配置文件里忘记配置了。两个都是因为粗心导致的乌龙问题 = =。

到此这篇关于iis应用程序池崩溃的解决方案的文章就介绍到这了,更多相关iis应用程序池崩溃内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com