服务器——关于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,则不在进行回收,也就没有必要设置回收时间
-
应用程序池-->右键,高级设置-->启动模式-->AlwaysRunning
- 说明:启用模式:AlwaysRunning:保证应用程序池在第一次创建或者被回收后,能自动再次重启运行
-
网站-->右键,高级设置-->预加载已启用:true
- 说明:保证程序池在启动过后,网站能响应预加载动作
-
使用 “应用程序初始化” 功能
-
IIS8 自带应用程序初始化工具包,IIS7.5要搜索独立安装包进行安装,低于7.5的暂时不支持IIS自动初始化。
-
点击网站,在右侧的主页上找到:管理-->配置编辑器
- 在配置编辑器,上面的节选项中,选择:system.webServer/applicationInitialization
- 设置:doAppInitAfterRestart:true
- 点击列表的第一行:集合,弹出集合编辑器,添加一个初始化请求地址(用于IIS初始化默认请求地址,可以是一个页面或接口),添加完成后,点击配置界面右侧的应用按钮,并重启应用程序池和网站
-
可以验证:在上述的初始化请求地址的接口中,在该请求接口中添加一个日志,可以验证,当点击回收应用程序池时候(或者停止应用,之后在启用),会发起一个对初始化请求地址的请求
-