解决方法
How can I do this? IS it possible to add a timeout? Or is it done automatically somehow?
如果您使用水平扩展(也称为扩展和扩展),azure将保持您的应用程序在配置新资源时不间断地继续运行.
Azure将自动预热新实例的应用程序并添加负载平衡以自动在它们之间分发请求.您无需单独单独配置负载平衡.
关于azure auto scale如何工作的更多细节,你可以参考这个article和这个article.
“Azure will automatically warm up the new instance’s application” – the links you provided do not say this – can you provide other references? I essentially don’t want the instance added to a load balancer until a specific URL is accessible with 200 OK or after a hard timeout of 2 minutes.
在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>
然后,如果您的网站在访问网络应用程序后扩展到2个实例.由于实例的进程未启动,因此负载平衡不会将请求重定向到第二个实例. Azure将自动预热第二个实例的Web应用程序.
你可以找到如下图所示的日志:
日志结果:
fr00030.xml(你可以找到进程是5860旧实例):
fr00031.xml(您可以找到该进程是8164新实例,需要4015毫秒)
此外,正如Byron Tardif所说,如果你想启用自定义预热(预热所有页面),你可以使用Application Initialization Module.
它也会在新请求访问您的第二个Web应用程序实例之前调用.