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

问题描述

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

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

 

问题解答

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

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

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

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

 

参考资料

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

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

 

 

【END】

posted @   路边两盏灯  阅读(78)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2022-11-18 【Azure 环境】向Azure Key Vault中导入证书有输入密码,那么导出pfx证书的时候,为什么没有密码呢?
2021-11-18 【Azure 事件中心】在Windows系统中使用 kafka-consumer-groups.bat 查看Event Hub中kafka的consumer groups信息
2020-11-18 【Azure Redis 缓存 Azure Cache For Redis】Redis支持的版本及不同版本迁移风险
点击右上角即可分享
微信分享提示