C#进阶-IIS应用程序池崩溃的解决方案

这篇具有很好参考价值的文章主要介绍了C#进阶-IIS应用程序池崩溃的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,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应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

二、查找问题来源并修复

1、下载 DebugDiag 插件

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

2、配置 DebugDiag 的断点信息

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

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

选择“A specific IIS web application pool (特定 IIS Web 应用程序池)”

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

选择“Breakpoint (断点)”

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

点击“添加断点”

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

单击 Breakpoint 下的“Ntdll!ZwTerminateProcess”,将其选为 Breakpoint Expression。将 Action Type 更改为“Full userdump”并将 Action Limit 设置为 10,然后单击 OK。

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

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

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

单击“Finish”以激活规则。

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

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

我们复现了出现问题的场景,IIS应用池再次崩溃,网页503无法访问,DebugDiag Tool的“Userdump Count”变为了10,表示程序池崩溃前程序已经出错了10次。

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

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

iis应用程序池启动报错,C#,服务器,.net,c#,运维,iis,程序池,崩溃

我这里有两个异常,一个是Ibatis映射的对象属性没有对上,导致的工厂加载时报错。另一个是空指针异常,因为有个全局变量在全局线程里反复调用,但配置文件里忘记配置了。两个都是因为粗心导致的乌龙问题 = =。文章来源地址https://www.toymoban.com/news/detail-768767.html

到了这里,关于C#进阶-IIS应用程序池崩溃的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决

    使用 Electron 打包 web 项目为桌面应用程序,由于运行环境的硬件条件或其他一些原因,导致程序运行过程中黑屏、白屏、崩溃。 2.1 依赖版本: electron : v8.2.1 electron-log : v4.1.1 electron-packager : v14.2.1 2.2 运行环境 win7 x86 2.3 分析过程 2.3.1 排除 程序本身运行不会“白屏”,但运行

    2024年02月07日
    浏览(44)
  • Asp .Net Web应用程序(.Net Framework4.8)网站发布到IIS

    开启IIS 如果已开启跳过这步 打开控制面板-程序  打开IIS 发布Web程序(.Net Framework 4.8 web网页) 进入IIS管理器新建一个应用池 新建一个网站 网站创建完毕 为文件夹添加访问权限  如果不添加访问权限,运行时将会得到如下错误 设置权限   勾选上面添加的账户的修改权限 

    2024年01月21日
    浏览(70)
  • windows服务器下java程序健康检测及假死崩溃后自动重启应用、开机自动启动

    前两天由于项目需要,一个windows上的批处理任务(kitchen.bat),需要接到mq的消息通知后执行,为了快速实现这里我们通过springboot写了一个jar程序,用于接收mq的消息,并调用bat文件。 调用windows的批处理脚本bat,并支持传参 可根据配置设置并发,同时消费多个mq消息调用多个

    2024年02月12日
    浏览(36)
  • ASP.NET Core应用程序在IIS服务器上的运行环境介绍和下载安装(超详细)

    要想在 IIS 上成功运行 ASP.NET Core 应用程序,我们需要有ASP.NET Core 运行时和ASP.NET Core Module。而在这里我们仅需要下载ASP.NET Core Hosting Bundle 即可,这是为什么呢? 想了解的可以看文章末节的介绍。 ASP.NET 核心运行时使你能够运行现有的 Web/服务器应用程序。 在 Windows 上,我们

    2024年02月11日
    浏览(41)
  • 基于C#的画图应用程序(窗体应用程序)C#组件、控件

      使用VS2019,建立窗体应用程序,借助一系列控件实现画图功能。   结合组件与控件的使用。 目录 一、预备知识 1、什么是C#的组件和控件 (1)共同点 (2)不同点 二、主要步骤 1、软件以及环境 2、设置接口 3、界面设计 4、编写代码 5、编译程序和运行 三、编写代码 1、设

    2023年04月08日
    浏览(45)
  • 《深入浅出.NET框架设计与实现》笔记6.2——ASP.NET Core应用程序多种运行模式之二——IIS 服务承载

     ASP.NET Core应用程序可以在多种运行模式下运行,包括自宿主(Self-Hosting)、IIS服务承载、桌面应用程序、服务承载。 因此选择和时的模式很重要。 IIS 服务承载 将 ASP.NET Core 应用程序托管在 Internet Information Services (IIS) 中。 利用 IIS 提供的高级功能,如负载均衡、HTTPS 支持和

    2024年04月26日
    浏览(33)
  • google浏览器应用程序无法启动,因为应用程序的并行配置不正确的完美解决方案

    打开chrome浏览器时候出错,错误提示: “应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。” 1、进入google的安装目录: 本人的是C:UsersAdministratorAppDataLocalGoogleChromeApplication 如果你的安装目录

    2024年02月04日
    浏览(69)
  • C# 记事本应用程序

    2024年02月10日
    浏览(36)
  • C# 应用程序强制获取焦点

    Windorm和WPF等应用程序想自己获取焦点焦点那是不可能的,只能通过系统的API来实现 上面第一个函数获取的是当前窗体的句柄,  如果窗体应用要获取自己的句柄的话就使用下面的方法获取 拿到句柄的话我们就可以使用SetForegroundWindow将窗体设置为前台应用 这可以能还不够,

    2024年02月12日
    浏览(29)
  • C#程序设计之windows应用程序设计基础

    题目描述 设计一个“简单通讯录”程序,在窗体上建立一个下拉式列表框、两个文本框和两个标签,实现以下功能:当用户在下拉式列表框中选择一个学生姓名后,在“学生姓名”、“地址”两个文本框中分别显示出对应的学生和地址。 代码 窗体代码 运行结果 题目描述 设

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包