我有一个在Windows Server 2016计算机上运行的ASP.NET Core MVC应用程序。我遇到的问题是,在闲置约1分钟后,应用程序响应速度很慢。如果我连续使用该应用程序,一切都会好起来,但是如果我一分钟不提交请求,那么下一个请求将需要10秒钟以上才能得到答复。
我开始摆弄IIS App Pool设置以保持其活动状态,但没有任何更改。最后,我完全将IIS删除,并使用Http.Sys运行了该应用程序的构建,其行为没有改变。我在Http.Sys中运行的cmd窗口中监视了应用程序日志,空闲了一分钟后,当下一个请求进入大约10秒钟时没有输出,因此该应用程序甚至没有开始执行任何操作直到那时。 10秒后,应用会在正常时间内响应请求。
示例应用日志:
信息:Microsoft.AspNetCore.Routing.EndpointMiddleware [0] 执行端点'XXXXXX(XXXX)' 信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [1] 与{action =“ xxx”,controller =“ xxx”}匹配的路由。执行动作XXXXXX(XXXX) 信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [2] 请求完成于6.2621ms 200 text / html; charset = utf-8
//立即刷新页面:
信息:Microsoft.AspNetCore.Routing.EndpointMiddleware [0] 执行端点'XXXXXX(XXXX)' 信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [1] 与{action =“ xxx”,controller =“ xxx”}匹配的路由。执行动作XXXXXX(XXXX) 信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [2] 请求完成6.658ms 200 text / html; charset = utf-8
//等待1分钟,然后刷新页面 (约10秒钟内日志中没有任何活动,然后这样:)
信息:Microsoft.AspNetCore.Routing.EndpointMiddleware [0] 执行端点'XXXXXX(XXXX)' 信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker [1] 与{action =“ xxx”,controller =“ xxx”}匹配的路由。执行动作XXXXXX(XXXX) 信息:Microsoft.AspNetCore.Hosting.Internal.WebHost [2] 请求完成7.1181ms 200 text / html; charset = utf-8
我是否可以寻找某些东西在服务器上休眠这些进程?我在Visual Studio中本地运行,或者在另一台测试服务器上进行测试时,只在暴露在Internet上的此演示服务器上,没有这种体验。我还应该补充一点,我将DbContext与SQL Server 2017一起使用,如果可能将其作为中间件注入到每个请求管道中。