不活跃的任务-如何杀死他们

shr*_*ing 2 amazon-web-services amazon-ecs

在aws ecs中创建任务的新修订版时,ecs将根据请求创建两个新实例。

但是,它保持了其他两个不变:

在此处输入图片说明

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

在此处输入图片说明

为什么会这样呢?

我的最小健康状况为100%(两个任务),最大为200%。

我的理解是,它将启动两个新任务,然后杀死不活动的任务。但是不活动的对象会一直呆在那里(直到我手动杀死它们),对旧代码执行不可预测的事情。

RaG*_*aGe 5

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

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

如果需要,可以选择旧任务并立即手动终止它们。甚至编写脚本来终止在较旧的taskdef上运行的所有任务。不用说,这可能会破坏活动的连接/事务。