Enn*_*nis 6 .net azure azure-web-sites azure-app-service-plans azure-web-app-service
在应用服务上启用自动缩放后,Azure将根据设置规则根据需要添加实例.我总是从至少2个实例开始.在应用程序代码完全初始化之前,我想确保流量不会定向到新的应用服务实例.我怎样才能做到这一点?是否可以添加超时?或者是以某种方式自动完成的?
您希望在应用程序的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/
即使该帖子正在讨论在进行交换操作时使用它来预热网站,它也适用于冷启动和扩展.
我怎样才能做到这一点?是否可以添加超时?或者是以某种方式自动完成的?
如果您使用水平扩展(也称为扩展和扩展),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应用程序实例之前调用.
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |