AWS步骤缩放添加了比配置更多的任务



我正在尝试通过添加逐步扩展策略来增加ECS任务的数量。当队列参数ApprovimateNumberOfMessagesVisible超过阈值时,会触发步长缩放策略。

缩放策略定义如下

scale-up-task-on-queue: ApproximateNumberOfMessagesVisible > 10
Policy type: Step scaling
For alarm: some-alarm-name
Take the action:
Add 2 tasks when 10 < ApproximateNumberOfMessagesVisible < 15
Add 2 tasks when 15 <= ApproximateNumberOfMessagesVisible < 20
Add 2 tasks when 20 <= ApproximateNumberOfMessagesVisible 

我从一个任务开始,我在队列中发布了大约60-70条消息来触发警报。理想情况下,我希望它的任务数为1+2+2=7,但我看到任务数正在上升到15-16。可能会发生什么?

有几件事。

  1. 它不会触发所有3个步骤并添加6个。它将根据度量值选择一个步骤。因此,如果度量值为60,它将为+2(因为这是为"20<=&"设置的调整。如果这是你想要的行为,你可能应该将第一步设置为+2,第二步设置为+4,第三步设置为+6

  2. 正如@Marcin在评论中提到的,警报在处于警报状态的每一分钟都会继续触发缩放策略。因此,一旦冷却结束,策略将继续增加任务计数,直到警报不再处于警报状态,或者达到最大大小。当消息从队列中删除时,增加冷却时间或确保您的任务将SQS消息设置为不可见将对此有所帮助。我能想到的一个问题是,冷却将适用于整个ECS服务,因此它也可能阻止CPU扩展策略添加任务。

将度量值设置得更远可能会有所帮助。这样,如果第一步被触发,并且您将其设置为+1,它将添加1个任务。然后,如果之后有更多的消息进入,并进入第二步(配置为+2(,它只会增加1个任务(因为冷却时间仍有1个(。https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html

最新更新