【问题标题】:Azure AppService repsonse slow after restart重启后 Azure 应用服务响应缓慢
【发布时间】:2017-05-23 00:47:42
【问题描述】:

我有一个带有 WebAPI 项目的 AppService。在我重新启动此服务或上传新版本后,我第一次调用的每个端点都响应非常缓慢(>15 秒)。如果我单击所有端点一次,则应用程序可以正常工作。

我的 Azure 具有 PayAsYouGo 订阅,我将 AppSerciceAlwaysOn 功能设置为 true。在跟踪日志中,我还看到了多个条目:

SnapshotHelper::RestoreSnapshot - 退出环境变量 aspnet:PortableCompilationOutput=true

在编译期间我使用以下参数:

/p:PrecompileBeforePublish=true 
/p:UseMerge=true 
/p:SingleAssemblyName=AppCode

【问题讨论】:

    标签: azure azure-web-app-service


    【解决方案1】:

    问题是您的 Azure 实例没有被第一次调用。您需要使用应用程序预热过程来使其首先运行。处理此问题的一种方法是使用通过您的web.config during swaps and deployments 配置的application initialization module

    这允许您在部署后调用站点中的页面作为启动过程的一部分。

    <system.webServer>  
      <applicationInitialization>  
        <add initializationPage="/warmup-cache.php" hostName="appinitwarmup.azurewebsites.net"/>  
      </applicationInitialization>  
    </system.webServer>
    

    【讨论】:

    • 感谢您的回复。我还有两个问题。 1. 如果我的每个端点都需要身份验证,那么在这种情况下,上述解决方案将如何工作? 2.是否需要为我的每个端点在WebAPI中添加
    • 您只需要预热每个单独的站点。如果端点只是同一网站实例上同一 API 的两个部分,您只需调用一个部分,因为此时两者都会加载它们的代码。身份验证并不重要,因为您只希望代码在内存中“热”,并且任何应用程序启动代码在第一次真正调用之前运行。
    • 您好,感谢您的回复,但它看起来不适合我。该站点的行为与此处类似 stackoverflow.com/questions/36333016/… ,但最奇怪的是,它仅在我订阅 Azure 时才以这种方式运行。在 bizspark 订阅中,同一个站点的行为不同 - 在这里我只需要等待一次 - 当站点第一次加载时 - 然后该站点的所有其他页面加载速度很快。随用随付,我需要单击每个单独的页面,然后它们才能快速运行。知道为什么这基于 2 个 Azure 会有所不同吗?
    • 他们的行为不应该不同。如果您勾选了“始终在线”但未勾选另一个,您能否检查该网站的设置?
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2016-02-18
    • 2020-01-23
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多