非活动任务 - 如何杀死它们

时间:2018-06-15 16:05:39

标签: amazon-web-services amazon-ecs

当我在aws ecs中创建我的任务的新版本时,ecs会根据请求创建两个新实例。

然而,它使另外两个保持不变:

enter image description here

AWS确实知道,但这不正确:

enter image description here

为什么会这样?

我的最低生命值为100%(两项任务),最高为200%。

我的理解是,它启动了两个新任务,然后杀死了不活动的任务。但是不活跃的人永远呆在那里(直到我手动杀死他们),在旧代码上做不可预测的事情。

1 个答案:

答案 0 :(得分:4)

请注意,它不是旧的任务,而是不活动的旧任务定义。您有两个正在使用taskdef的正在运行的任务:34和2个使用较旧的,现在处于非活动状态的taskdef的旧任务。

ECS / ALB会立即停止将新请求路由到旧任务,但只要存在与它们的活动连接,它们就会保持不变。这实际上是一种启用零停机时间优雅切换的机制。如果您的应用程序保持长期连接,或者这是您交易的性质,那么您的旧任务将会持续更长时间。

如果您愿意,您可以选择旧任务并立即手动终止;甚至编写一个脚本来终止在较旧的taskdef上运行的所有任务。不用说,这可能会对活动连接/事务造成破坏。