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

ASP.NET Core 2.0应用请求挂起问题求助

排查ASP.NET Core 2.0本地IIS/Kestrel环境下请求卡顿的思路

我之前也碰到过几乎一模一样的场景——ASP.NET Core应用在其他机器运行正常,本地到第5次GET请求就突然挂起30秒,而且应用完全没重启。结合你已经简化到只剩MVC和日志中间件的情况,给你几个实际排查过的有效方向:

  • 先排查日志中间件的影响:既然你只保留了日志组件,先临时移除日志中间件再测试。我之前遇到过用同步日志写入(比如直接写本地文件)时,因为文件锁定或者IO阻塞导致请求挂起的情况。如果移除后卡顿消失,就把日志改成异步写入模式,或者调低日志级别减少输出量。
  • 检查TCP连接状态:打开命令行执行netstat -ano,看看本地和应用相关的端口有没有大量处于TIME_WAIT状态的连接。如果是,可能是连接没被正确回收,到第5次时占满了可用连接。可以调整Windows的TCP参数(比如缩短TcpTimedWaitDelay)来缓解。
  • 关闭本地安全软件试试:很多时候本地的杀毒软件、防火墙会对HTTP请求做深层扫描,次数多了触发阈值就会导致延迟。暂时禁用这些软件再测试,能快速排除这类外部因素。
  • 用诊断工具看线程阻塞情况:在Visual Studio里开启诊断工具(Diagnostics Tools),当请求挂起时,查看线程的调用栈,看看是哪个线程在等待——比如是卡在文件IO、锁等待,还是某个框架内部的操作。这一步能精准定位问题点。
  • 检查Kestrel的连接限制配置:在Program.cs的Kestrel配置里,确认是否设置了过低的并发连接数限制。虽然.NET Core 2.0默认值足够,但可以试着手动调高:
    WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options =>
        {
            options.Limits.MaxConcurrentConnections = 100;
            options.Limits.MaxConcurrentUpgradedConnections = 100;
        })
        .UseIISIntegration()
        .UseStartup<Startup>();
    
  • 确认.NET Core 2.0的补丁版本:2.0是比较老的版本,有一些已知的性能bug。试着安装.NET Core 2.0的最新补丁包,说不定能解决这个特定的卡顿问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:25:40