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

IIS偶发503错误且无法自动恢复,需获取根因日志

我正在排查生产环境中ASP.NET MVC网站的IIS 503错误问题,希望能找到定位根因的有效方法,具体情况如下:

目标

找到让IIS报告503错误根因的排查方法。

问题

生产环境里,我们的ASP.NET MVC网站所有端点偶尔会出现IIS返回503错误的情况,而且除非重启应用程序池,否则无法恢复。需要特别说明的是,出现问题时IIS管理器里的应用程序池仍处于运行状态,我反复刷新确认过这点。

配置文件

我已经清理了这些文件里的敏感信息,就算缺少用户名和密码也不用在意:

  • Machine.config
  • Web.config

远程诊断

我在生产环境做了以下排查工作:

  • 查看所有异常日志,未发现未处理的异常;能看到有异常抛出,但全部都被处理了。
  • 检查事件日志,找不到IIS、ASP.NET或.NET Runtime相关的错误;其他日志也无异常,而且已经和系统团队确认过事件日志的写入权限没问题。
  • 开启失败请求跟踪并查看日志,只发现一条导致500错误的Operation completed successfully信息;暂时没找到相关文档解释,但我推测这条信息指向向客户端报告问题的操作已完成。
  • 检查代理到负载均衡服务器的流量:用HAProxy做代理,通过Graylog聚合分析数据;高峰时段请求耗时都是毫秒级,但问题出现后,HAProxy会堆积大量请求,耗时明显增加;问题和具体端点无关,触发问题的第一个请求也不固定。

本地诊断

我试着在本地复现生产环境的症状:

  • 手动抛出ThreadAbortException:失败请求日志内容和生产环境一致,但应用程序池会停止,和生产环境症状不符。
  • 把应用程序池队列长度设为10(生产和本地默认值为1000),用JMeter以约800请求/秒的频率压测本地机器:成功复现了完全相同的症状;但添加第二个工作进程后(生产环境有2个工作进程且做了负载均衡),问题就不再出现了;我还没找到确认是否达到队列长度限制的方法,查看性能计数器的数据和Graylog里的流量数据对不上。

目前来看,只有本地诊断里的第二种情况和生产环境症状最接近,但我还是没找到能让IIS生成相关日志来确认根因的方法。

内容的提问来源于stack exchange,提问作者Max Young

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:33