如何确保新的自动加载的Azure App Service实例在处理流量之前是否温暖?

Enn*_*nis 6 .net azure azure-web-sites azure-app-service-plans azure-web-app-service

在应用服务上启用自动缩放后,Azure将根据设置规则根据需要添加实例.我总是从至少2个实例开始.在应用程序代码完全初始化之前,我想确保流量不会定向到新的应用服务实例.我怎样才能做到这一点?是否可以添加超时?或者是以某种方式自动完成的?

Byr*_*dif 9

您希望在应用程序的web.config文件中使用Application Initialization.

你需要添加这样的东西:

<system.webServer>  
  <applicationInitialization >  
    <add initializationPage="/page-you-want-to-warm-up.php" hostName="your-app.azurewebsites.net"/> 
  </applicationInitialization>  
<system.webServer> 
Run Code Online (Sandbox Code Playgroud)

每次你的应用程序启动时,这可能是因为新工作人员上线(水平扩展)或者甚至只是由新部署,配置更改等引起的冷启动... ApplicationInitialization将被执行以在接受之前预热站点对该工人的要求.

你可以在这里阅读更多相关信息:http://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/

即使该帖子正在讨论在进行交换操作时使用它来预热网站,它也适用于冷启动和扩展.

  • @ByronTardif我不认为这行得通...至少不如我预期的那样,因为在交换之后,如果我碰到任何页面,我将获得巨大的加载时间,好像没有进行预热... (2认同)

Bra*_*ang 5

我怎样才能做到这一点?是否可以添加超时?或者是以某种方式自动完成的?

如果您使用水平扩展(也称为扩展和扩展),azure将保持您的应用程序在配置新资源时不间断地继续运行.

Azure将自动预热新实例的应用程序并添加负载平衡以自动在它们之间分发请求.您无需单独单独配置负载平衡.

关于azure auto scale如何工作的更多细节,你可以参考这篇文章和这篇文章.


"Azure将自动预热新实例的应用程序" - 您提供的链接不说明这一点 - 您能提供其他参考吗?我基本上不希望将实例添加到负载均衡器,直到可以使用200 OK或2分钟的硬超时访问特定URL.

在Web应用程序扩展到2实例后,如果新请求被发送到默认实例网站,azure将预热新实例的Web应用程序.

您可以编写如下测试:

在web.config的webserver标记中添加以下配置代码以跟踪所有请求:

<tracing>  
  <traceFailedRequests>  
    <clear/>  
    <add path="*">  
      <traceAreas>  
      <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,iisnode" verbosity="Verbose" />  
      </traceAreas>  
      <failureDefinitions statusCodes="200-600" />  
    </add>  
  </traceFailedRequests>  
</tracing> 
Run Code Online (Sandbox Code Playgroud)

然后,如果您的网站在访问网络应用程序后扩展到2个实例.由于实例的进程未启动,因此负载平衡不会将请求重定向到第二个实例.Azure将自动预热第二个实例的Web应用程序.

你可以找到如下图所示的日志:

在此输入图像描述

日志结果:

在此输入图像描述

fr00030.xml(你可以找到进程是5860旧实例):

在此输入图像描述

fr00031.xml(您可以找到该进程是8164新实例,需要4015毫秒)

在此输入图像描述

此外,正如Byron Tardif所说,如果你想启用自定义预热(预热所有页面),你可以使用应用程序初始化模块.

它也会在新请求访问您的第二个Web应用程序实例之前调用.

  • 谢谢,但这不能回答我的问题。我了解自动缩放通常如何与App Services一起使用。我需要知道的是Azure如何确定何时对应用程序进行预热,以便它可以为流量提供服务。您说“ Azure将自动预热新实例的应用程序”-您提供的链接没有这样说-您可以提供其他参考吗?我基本上不希望将该实例添加到负载均衡器中,直到可以通过200 OK访问特定URL或在2分钟的硬超时后。 (2认同)