如何解决Azure Function插槽已预热,但仍会冷启动
对于我们的Azure功能,我们将自动插槽交换功能与以下应用程序设置结合使用,以确保我们的插槽在上线之前已经预热:
WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS = 1
WEBSITE_SWAP_WARMUP_PING_PATH = "/api/healthcheck"
WEBSITE_SWAP_WARMUP_PING_STATUSES = "200"
这导致我们的ADO管道调用运行状况检查终结点(已确认),并且只有在成功的情况下才将插槽交换为活动状态。
问题在于,所有这些操作发生后,在我们收到响应之前,请求要等待几秒钟。此后的任何请求实际上都是即时的。对于每个部署,此行为都是一致的。
我们不会期望如此,因为我们知道在命中运行状况检查端点时,过渡插槽已预热,然后才将其交换到生产中。那么,为什么我们会遇到这种冷启动延迟呢?插槽交换完成后,我们甚至可以等待一两分钟,我们总是体验。
是否发生了奇怪的事情,例如,一旦将插槽移入生产环境,就需要在加热之前再次将其击中?
解决方法
This可能会对您有所帮助。
插槽更换后,应用可能会意外重启。这是因为交换后,主机名绑定配置不同步,这本身不会导致重新启动。但是,某些基础存储事件(例如存储卷故障转移)可能会检测到这些差异并强制所有工作进程重新启动。为了最大程度地减少这些重新启动的类型,请在所有插槽上设置WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG = 1应用设置
如果将变量WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG
设置为1
,则应该能够摆脱冷启动,冷启动是由重新启动主机引起的。但是,请注意,在执行插槽功能期间,可能会非常缓慢地处理请求。
您也可以在this github issue上找到有关零停机时间部署的讨论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。