chenxin's blog
[原创]-asp.net core 应用部署到iis后被随机重启问题解决

问题现象及排查结果

在一次排查业务系统执行中断原因排查过程中发现.net core kestrel服务器自动重启的日志,一开始以为是代码层面问题,反复排查一段时间后,无果,看了下windows 应用程序日志,发现有:Sent shutdown HTTP message to process '5180' and received http status '202'. 类似的日志消息,最终将该消息复制到网上搜索了下,发现是iis应用程序池的一些设置导致的问题。

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/?view=aspnetcore-6.0&tabs=windows#hosting-models 微软官方文档中也说了,当asp.net core站点使用IIS 进程外部署方式部署时,由IIS AspNetCore Module 来处理站点进程管理,当站点进程被shutdown或者崩溃后,该模块会自动重启站点,这也就是为什么应用被shutdown后,还能重启。

 

解决方案

  • 将站点应用程序池的 固定时间间隔(分钟) 设置为0,该配置表示间隔多少分钟重启一次站点,0表示不重启。

  • 将 闲置超时(分钟) 时间设置为0(表示站点多久没有收到请求就终止,设为0表示不判断超时)

  • 重启IIS引用程序池和站点

 

以下是一些关于进程内、进程外部署的一些说明。

如何判断是进程内,还是进程外部署呢?

只需要在代码中增加以下代码,如果返回的是w3wp/iisexpress

则表示iis进程内部署,如果返回的是dotnet,则是进程外部署。

Process.GetCurrentProcess().ProcessName

 

IIS 进程外部署、进程内部署说明

IIS进程外部署:表示单独创建一个进程去处理请求,进程内包含Kestrel服务器,对传入的请求进行监听,当请求到达IIS后,通过AspNetCore Module 这个模块转发请求到Kestrel服务器,Kestrel再转给asp.net core 应用代码进行处理。

IIS 进程内部署:表示asp.net core 应用代码运行在iis 工作进程内,而不是单独启动一个独立进程去处理请求,也不启动Kestrel服务器,而是IIS收到请求后,直接把请求转发给asp.net core 代码。

 

参考

https://stackoverflow.com/questions/53766760/asp-net-core-randomly-restarts-under-iis

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/?view=aspnetcore-6.0&tabs=windows

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-6.0

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/out-of-process-hosting?view=aspnetcore-6.0

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/hosting-bundle?view=aspnetcore-6.0

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/modules?view=aspnetcore-6.0

非特殊说明,本文版权归 陈新 所有,转载请注明出处.
本文标题:asp.net core 应用部署到iis后被随机重启问题解决
(0)
(0)
微信扫一扫
支付宝扫一扫
写作不易,如果本文对你所有帮助,扫码请我喝杯饮料可以吗?
评论列表(0条)
还没有任何评论,快来发表你的看法吧!
{{item.userInfo.nickName}}{{item.userInfo.isBlogger?"(博主)":""}}
{{getUserType(item.userInfo.userType)}} {{formatCommentTime(item.commentDate)}}
回复
{{replyItem.userInfo.nickName}}{{replyItem.userInfo.isBlogger?"(博主)":""}}
@{{replyItem.reply.userInfo.nickName+":"}}
{{getUserType(replyItem.userInfo.userType)}} {{formatCommentTime(replyItem.commentDate)}}
回复
正在加载评论列表... 已经到底啦~~~
文章归档 网站地图 闽ICP备2020021271号-1 百度统计