0
点赞
收藏
分享

微信扫一扫

【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释

王传学 2024-11-18 阅读 21

问题描述

创建Container App时,可以设置终结一个App的副本的方式,通过设置 Termination grace period值【Time given to a replica after it is sent SIGTERM before it is terminated. (Default: 30 seconds)】来优雅的关闭应用。

【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释_App

只是,在通过观察副本的启用和关闭日志,有时候发现当最后一个请求处理完成后,或者没有处理完成的情况下,副本依旧存在关闭的情况。 Termination grace period的设置并没有完全的遵守。

【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释_Pod_02

 

问题解答

terminationGracePeriodSeconds : [Termination grace period]: 这个参数的定义是从pod收到terminated signal到最终shutdown的最大时间,这段时间是给pod中的application 缓冲时间用来处理链接关闭,应用清理缓存。 

terminationGracePeriodSeconds设置最大值600 秒(10 分钟)。如果应用程序需要超过 10 分钟或更长时间来清理逻辑,这可能会带来挑战,特别是当应用程序扩展到许多副本(甚至只是几个副本)时。强烈建议围绕清理逻辑重新审视应用程序设计,以减少这种情况:

 此外,由于 Pod(以及其中的容器)仍然存在,如果许多 Pod 一次等待终止几分钟 - 并且创建了新的 Pod/副本,这可能会开始出现资源争用问题 - 取决于有多少 Pod资源已经存在于环境中

下面概述了 Pod 生命周期中的情况 - “关闭应用程序的窗口”是用户在terminationGracePeriodSeconds中定义的数字 - 并在发送SIGKILL之前显示用于清理逻辑的窗口:

【Azure Container App】Container Apps 设置延迟删除 (terminationGracePeriodSeconds) 的解释_App_03

 

参考资料

容器应用程序的优雅终止 :

 https://azureossd.github.io/2024/05/27/Graceful-termination-on-Container-Apps/  或 https://www.cnblogs.com/lulight/articles/18553596

 

 

【END】

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

举报

相关推荐

0 条评论