对于我们的 Azure 功能,我们使用具有以下应用设置的自动插槽交换功能,以确保我们的插槽在上线之前被预热:
WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS = 1
WEBSITE_SWAP_WARMUP_PING_PATH = "/api/healthcheck"
WEBSITE_SWAP_WARMUP_PING_STATUSES = "200"
这导致我们的 ADO 管道调用运行状况检查端点(已确认),并且只有在成功时才将插槽交换为活动状态。
问题是,在这一切发生之后,在我们收到响应之前,需要等待很多秒的请求。此后的任何请求几乎都是即时的。这种行为对于每次部署都是一致的。
我们不会预料到这一点,因为我们知道在命中运行状况检查端点时,暂存插槽会被加热,然后插槽会被交换到生产中。那么为什么我们会遇到这种冷启动延迟呢?我们甚至可以在插槽交换完成后等待一两分钟,而且我们总是能体验到它。
是否发生了一些奇怪的事情,例如一旦将插槽移至生产环境,它需要在加热之前再次被击中?