大约一年前,Azure Web App 插槽交换是“无缝”的 - 一旦完成,新实例就会预热以立即接受新请求。
现在,当我将插槽从 STAGING
交换到 Production
时,即使在针对 STAGING
运行测试以预热应用程序之后,也会将结果交换为很多时刻的热身时间。
这种情况可能会发生怎样的变化?我该如何确保我的应用在交换期间保持 100% 可访问?
最佳答案
您对插槽配置进行过任何更改吗?
我注意到有一些事情会导致生产预热后不会立即进行交换,如果您仔细考虑一下,它们是有道理的:
- 在“应用程序设置”下的每个插槽配置中,如果应用程序设置或连接字符串与未选中“插槽配置”复选框的任何设置不完全相同,那么在这些情况下,它将进行预热,然后是交换,然后必须再次预热,因为它似乎在交换后更新了这些设置(看起来是这样)。
- 为确保您的设置正确,如果您要进行手动交换,请检查 Azure 门户是否显示“无警告”,以确保系统不必执行任何异常操作
- 在手动交换中,源和目标的选择很重要。这是因为源插槽首先使用目标插槽配置进行预热(因此在预热期间会很慢),然后发生交换,这意味着源变为目标,这应该是立即的。然后再次进行预热以使原始源恢复到其原始设置。因此,如果您为源选择了错误的项目,则预热时间将加倍。
确保您的 web.config 中有 applicationInitialization 设置,以强制预热在交换之前命中您网站上的 URL:
<system.webserver> <applicationInitialization> <add initializationPage="/" /> </applicationInitialization> </system.webServer>
关于Azure Staging<>生产交换不是无缝的 - 需要再次预热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40371113/