.NET 6应用部署至IIS后,WebApplication.Run启动后长时间无响应
ASP.NET迁移至.NET 6.0后IIS启动延迟4分钟问题排查求助
我们刚将一个ASP.NET应用迁移至.NET 6.0并部署在IIS 10中,自迁移后每次启动应用时,部署的应用会出现约5分钟的无响应状态。
基础配置代码
public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Host.ConfigureDefaults(args); builder.Services.AddControllersWithViews(ConfigureMvcOptions) var app = builder.Build(); Log.Info("Begin Configuration"); app.UseRouting(); app.MapControllers(); app.UseStaticFiles(); app.Lifetime.ApplicationStarted.Register(Started); ConfigureSomeOtherIrrelevantSutff(); Log.Info("Configuration Complete"); app.Run(); //Delay happens after this } private static void Started() { Log.Info($"Application Started"); }
日志内容
2023-01-17 12:27:50.470: Begin Configuration 2023-01-17 12:28:25.498: Configuration Complete 2023-01-17 12:28:25.580: Application Started 2023-01-17 12:32:57.700: First Request
另外,IIS AspNetCore Module V2在事件查看器中记录了Application 'C:\IIS\MyApp' started successfully.的信息。
在上述日志之后,应用要等待约4分钟才会处理首个请求,期间Web应用完全无响应,浏览器持续加载。
相关注意事项
- 配置了
<handlerSetting name="experimentalEnableShadowCopy" value="true" />,用于解决之前部署时的文件锁定问题,但认为这不是当前问题的原因,因为延迟发生在文件复制完成很久之后。 - 延迟期间,IIS工作进程的CPU使用率为0%,应用完全没有任何操作。
- IIS中已启用“禁用重叠回收”,新进程启动时旧进程已完全终止,不存在资源竞争。
- 所有文件部署完成后才会回收应用池,不会因配置/文件变化自动回收。
补充说明
- 无法在本地或无负载的服务器上复现此问题。
- 有时关闭应用时也会遇到类似问题:注册的ApplicationStopped事件显示应用已关闭,但IIS会持续等待数分钟才启动新版本。
不知从何处着手诊断该问题,因为它似乎完全发生在我们的代码之外,请问该如何进一步调试此延迟问题?
内容的提问来源于stack exchange,提问作者MrZander
相关产品推荐
相关产品推荐

