服务器——关于WebApi部署在IIS长时间不连接后第一次连接响应慢的问题

0. 服务器信息

  • Windows Server 2019 Standard

  • IIS :Version :10.0

  • 第一次请求响应慢的原因:默认情况下,应用程序池在不活动情况下(无请求操作),一段时间后,将被IIS自动回收掉。

1. 修改IIS的下述配置

  • 应该程序池-->右键,高级设置-->进程模型,闲置超时(分钟)-->默认是20,设置为0

  • 应用程序池-->右键,高级设置-->回收,固定时间间隔(分钟)-->默认是1740(29小时),设置为0

  • 应用程序池-->右键,高级设置-->回收,禁用重叠回收-->默认是false,设置为true

  • 应用程序池-->右键,高级设置-->回收,特定时间:设置为0:00:00

    • 说明:将回收的固定时间间隔设置为0,则不在进行回收,也就没有必要设置回收时间
  • 使用 “应用程序初始化” 功能

    • IIS8 自带应用程序初始化工具包,IIS7.5要搜索独立安装包进行安装,低于7.5的暂时不支持IIS自动初始化。

    • 应用程序池-->右键,高级设置-->启动模式-->AlwaysRunning

      • 说明:启用模式:AlwaysRunning:保证应用程序池在第一次创建或者被回收后,能自动再次重启运行
    • 网站-->右键,高级设置-->预加载已启用:true

      • 说明:保证程序池在启动过后,网站能响应预加载动作
    • 点击网站,在右侧的主页上找到:管理-->配置编辑器

      • 在配置编辑器,上面的节选项中,选择:system.webServer/applicationInitialization
      • 设置:doAppInitAfterRestart:true
      • 点击列表的第一行:集合,弹出集合编辑器,添加一个初始化请求地址(用于IIS初始化默认请求地址,可以是一个页面或接口),添加完成后,点击配置界面右侧的应用按钮,并重启应用程序池和网站
    • 可以验证:在上述的初始化请求地址的接口中,在该请求接口中添加一个日志,可以验证,当点击回收应用程序池时候(或者停止应用,之后在启用),会发起一个对初始化请求地址的请求

    • 参考:解决iis自动回收导致第一次访问慢和定时任务暂停的问题

    • 参考:IIS初始化(预加载),解决第一次访问慢,程序池被回收问题

    • 参考:IIS8.0 配置应用程序初始化功能

2.其他参考

posted @ 2024-10-17 09:23  shanzm  阅读(142)  评论(0编辑  收藏  举报
TOP