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

Azure Web App(ASP.NET MVC)闲置10分钟后冷启动,加载耗时10-20秒求助

我之前也碰到过几乎一模一样的Azure Web App冷启动问题,那种闲置后第一次请求卡十几秒的感觉真的太闹心了!结合我的排查和解决经验,给你梳理几个关键方向:

可能的核心原因
  • 数据库连接池被回收:你的Web App虽然靠5分钟探测保住了进程,但数据库端的连接池可能因为10分钟左右的闲置超时被自动回收了。这时候第一次涉及数据库的请求需要重新初始化连接池,就会出现类似冷启动的延迟——这和你说的“仅在涉及数据库时发生”完全吻合。
  • 探测请求没触达数据库逻辑:如果你的AI探测只是请求了静态页面或者不碰数据库的接口,那Web App进程是活的,但数据库连接池还是会因为长期闲置被释放,起不到保活连接的作用。
  • Azure后台资源的隐性回收:即使开了探测,Azure对闲置的数据库连接相关资源可能还是会做回收,尤其是在基础层这类资源受限的定价层下。
先做这几步排查验证
  • 修改探测目标:把探测请求改成一个会执行轻量数据库查询的接口(比如查一条系统配置数据),确保每次探测都能触发数据库交互,而不只是唤醒Web App进程。
  • 查数据库连接参数:检查你的连接字符串里的Connection Timeout,还有数据库端的闲置超时设置(比如Azure SQL的idle_in_transaction_session_timeout),看是不是刚好卡在10分钟左右的阈值。
  • 扒AI的依赖日志:在Application Insights里过滤数据库相关的依赖请求,对比正常请求和冷启动请求的数据库连接耗时——如果冷启动那次的连接耗时飙升到10秒以上,基本就能实锤是连接池重建的问题。
针对性解决办法
  • 优化探测逻辑:将健康探测指向带轻量数据库查询的接口,保证每5分钟的探测都能维持数据库连接池的活跃状态,避免被回收。
  • 调整连接池配置:在数据库连接字符串里添加Min Pool Size=5(数值根据你的负载调整,别太大),让连接池始终保持几个活跃连接,不会因为闲置被清空。
  • 延长数据库闲置超时:如果是数据库端的闲置断开设置导致的,比如Azure SQL可以把idle_in_transaction_session_timeout调整为30分钟以上,不过要注意平衡数据库资源占用。
  • 开启Always On:在Azure App Service的配置里打开Always On选项(标准层及以上可用),让Azure持续维持Web App进程活跃,配合数据库探测效果会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:01:16