我们将Asp.Net应用程序托管为Azure,并使用扩展功能。问题是,当我们添加新实例时,这些新实例几乎会立即启动服务器请求--在热身过程完成之前。我使用应用程序初始化模块,配置如下:
<applicationInitialization remapManagedRequestsTo="/warmup.html">
<add initializationPage="/start.ashx" />
</applicationInitialization> 一旦我们扩展了计划,例如从3个实例到4个,并请求站点,大约有1/4我看到了我的warmup.html -因此,我假设新创建的实例之前,平衡器考虑它实际上是热身。
请注意:我们的网站不需要HTTPS,所以这不应该是一个问题。
问题:在准备好为请求服务之前,我们如何才能防止对实例的请求进行热身处理?
发布于 2022-08-01 10:30:51
您可以向您的web.config中添加一个部分,它告诉IIS对此路由(initializationPage)进行ping以获取状态,这将有助于在预热完成之前使实例可用。
<system.webServer>
<applicationInitialization remapManagedRequestsTo="/warmup.html">
<add initializationPage="/wait-for-init.php" hostName="appinit-site.azurewebsites.net"/>
</applicationInitialization>
<system.webServer>查看这个博客链接:https://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/
请参阅:https://www.iis.net/downloads/microsoft/application-initialization
另外,您可以使用像Redis的Azure Cache这样的外部缓存提供程序,您的新实例只需指向这个外部缓存,而不必重新加载数据。
此外,检查这个博客可能会有帮助。
https://stackoverflow.com/questions/73148106
复制相似问题