【IIS】应用程序池回收
前言
在Core3.0+sqlSugarCore5.0.0.15,提示Invalid operation.
经一圈百度后,怀疑到数据库连接池上,继而怀疑到IIS程序池上。
参考的博文
如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
https://www.cnblogs.com/sky6699/p/7124615.html
应用程序池提供服务的进程关闭时间超过了
https://blog.csdn.net/chensirbbk/article/details/6435795
IIS回收情况说明
https://blog.csdn.net/starfd/article/details/53641413
IIS自动回收解决方案
https://www.cnblogs.com/qqhewei/p/13408146.html
IIS回收的方式
默认配置
这是默认情况下的IIS回收设置,可以看到有“固定时间间隔”、“固定请求数量”、“特定时间”、“虚拟内存使用情况”和“专用内存使用情况”五项设置,
如果进行了相应设置,当项目运行中任意一项满足了回收设置条件,IIS就会进行回收
高级配置
当然实际会导致IIS回收的并不只有这五项,点击“高级设置”
配置页面如下
回收
1.其中,生成回收事件日志条目,配置写入系统日志
对应前面"正在回收..."
2.说明
ISAPI报告了非正常状态:对应故障部分,指的是web程序运行过程中没有处理的异常情况,这种时候一般能在“事件查看器”中找到对应的错误日志
超出请求限制:对应“固定请求数量”设置
超出虚拟内存限制:对应“虚拟内存使用情况”设置
固定时间间隔:对应“固定时间间隔”设置
手动回收:这个不多说了,就是人为的触发回收,对应第一张图“应用程序池任务”的“回收”部分
特定时间:对应“特定时间”设置
已超出专用内存限制:对应“专用内存使用情况”设置
应用程序池配置已更改:这个对应的情况最多,包括web.config配置变更(包括部分通过configSource方式独立出去的配置,如connectionStrings,继承自System.Configuration.IConfigurationSectionHandler的自定义配置,但不包括继承自System.Configuration.ConfigurationSection的自定义配置,注意你在iis管理器中设置iis配置其实也是在修改web.config)、bin目录下任意文件发生变化
3. 回收事件的查看
在windows的事件查看器=>Windows日志=>系统,来源为WAS的日志
有关于应用程序池关闭的日志记录,包含关闭时间以及原因
4.回收的延伸,IIS的回收意味着资源的重新分配,也就是先关闭再打开
(1)在windows的事件查看器=>Windows日志=>应用程序,来源为IIS AspNetCore Module V2的日志
显示为应用被关闭:Application 'MACHINE/WEBROOT/APPHOST/OVERTIME' has shutdown.
(2)在windows的事件查看器=>Windows日志=>应用程序,来源为IIS AspNetCore Module V2的日志
显示为应用被开启:Application 'D:\WebIIS\OverTimeServer\' started successfully.
进程模型
1.关闭时间限制(秒)
关闭进程的时间,默认为90秒
最近有个接口,有次不明原因的关闭,其关闭时间超过了90秒,于是有了个日志
于是将该配置修改为:600,也就是10分钟
2.闲置超时
IIS闲置的时间,默认为20分钟,在此时间范围内无请求,也会被回收
3.最大工作进程数
IIS应用程序的工作进程,默认为1
(3)一个实际例子
查看系统进程
快速故障保护
“故障”(注意这里的“快速故障防护”指的是当IIS短时间内频繁出错时的处理方式,每次web程序出错其实都会导致该应用程序池重启)
1.最大故障数
在故障间隔(分钟),发生最大故障数后,也会回收IIS
IIS回收的情景
默认情况下的回收
其他回收
1.“闲置超时”
2.“故障”(注意这里的“快速故障防护”指的是当IIS短时间内频繁出错时的处理方式,每次web程序出错其实都会导致该应用程序池重启)