You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6 IIS工作进程随机崩溃,求自动重启配置方案

解决方法

1. 配置应用程序池故障恢复策略

打开IIS管理器,找到目标应用程序池的高级设置,定位到进程模型下的故障选项:

  • 将「发生故障时的操作」设置为重启
  • 配置「故障间隔」(推荐设为5分钟)和「最大故障数」(推荐设为5),确保短时间内多次故障时触发保护机制
  • 启用「快速失败保护」,当进程在指定间隔内崩溃次数超过阈值时,自动回收并重启进程

2. 开启自动启动与常驻运行

在应用程序池高级设置中:

  • 将「启动模式」设为AlwaysRunning,确保应用池持续运行
  • 确认「自动启动」选项为True,这样进程终止后IIS会立即启动新的工作进程

3. 捕获未处理异常(从根源减少崩溃)

自动重启是临时方案,定位并修复崩溃原因才是根本:

  • 在Program.cs中添加全局异常中间件,捕获并记录所有未处理异常:
    app.UseExceptionHandler(errorApp =>
    {
        errorApp.Run(async context =>
        {
            var exceptionFeature = context.Features.Get<IExceptionHandlerPathFeature>();
            if (exceptionFeature?.Error != null)
            {
                // 替换为你的日志组件(如Serilog、NLog)记录异常详情
                Log.Error(exceptionFeature.Error, "全局未处理异常,请求路径:{Path}", exceptionFeature.Path);
            }
            
            context.Response.StatusCode = StatusCodes.Status500InternalServerError;
            await context.Response.WriteAsJsonAsync(new { Message = "服务器内部错误" });
        });
    });
    
  • 配置详细的应用日志(包括请求日志、错误日志),结合事件查看器的崩溃记录,定位触发崩溃的代码路径或外部依赖问题

4. 设置合理的进程回收规则

在应用程序池高级设置的回收选项中,配置自动回收条件:

  • 按时间间隔回收(如每天凌晨2点)
  • 按内存占用回收(如私有内存超过1GB时回收)
  • 按请求数回收(如每处理10000次请求后回收)
    这些规则能避免内存泄漏、资源耗尽等问题导致的随机崩溃

内容的提问来源于stack exchange,提问作者Kannan M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:23:36