Azure应用服务有时会停止工作

时间:2018-08-13 09:53:09

标签: azure timeout azure-web-sites

自5到6个月以来,我已经在Azure门户上托管了客户端(Web应用程序)和服务(Web API)应用程序。

自同一天托管我的应用程序以来,我面临的问题是,当我第一次调用我的api从客户端Web应用程序加载下拉列表时,它有时会给我超时错误,但是有时候从api获取结果要花费比预期更多的时间,因此客户端必须等待响应到来。

第一次成功尝试后,它的运行速度比预期的要快,但是第一次它会由于延迟获取结果而工作一段时间,或者有时会抛出超时错误。

我已经使用调度程序不时调用api,但这也没有帮助。

任何其他人都可以分享的想法,我会很高兴,并预先感谢。

3 个答案:

答案 0 :(得分:4)

您可以尝试为网络应用打开应用程序设置下的Always On功能:

here's the option

这可以确保当站点空闲时,该进程不会被卸载(进入睡眠状态):

what does Always On mean?

我可能是这种“睡眠中”,导致初始请求需要更长的时间,因为它不得不再次“热身”。

答案 1 :(得分:0)

如果仅在第一个请求中发生这种情况,则可能与您的Web应用程序首次加载有关。换句话说:JIT编译您的解决方案,加载dll's:使应用程序变热并准备处理请求的一切。

解决此问题的一种方法是将代码部署到Web App上的插槽(https://docs.microsoft.com/en-us/azure/app-service/web-sites-staged-publishing)上,使其热销,仅将部署插槽与生产插槽互换。假设您正在使用VSTS发行版,则有现成的部署步骤,可以部署到插槽并交换插槽。可以使用Powershell步骤或调用REST API的扩展轻松地调用API。

另一种更复杂的方法可能是使用IIS标准功能来使您的应用程序热身:https://docs.microsoft.com/en-us/azure/app-service/web-sites-staged-publishing

答案 2 :(得分:0)

这可能不是解决方案,但是作为Azure Web应用程序的最佳实践,我尝试通过应用程序见解对它们进行可用性测试。对我来说,错误或请求丢失的主要驱动力一直是可用性失败。

为此,我通常还会在流量管理器,复制的Web应用程序和自动扩展服务计划下构建Web应用程序。