You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS Fargate CPU目标追踪自动扩缩容:低CPU利用率告警持续触发问题

问题

我运行着启用CPU目标追踪自动扩缩容的ECS Fargate服务,发现低CPU利用率的CloudWatch告警始终处于“告警中”状态。是否因为目标值设为70%,自动扩缩容告警会同时触发低于和高于70%的情况?我不希望该低CPU告警持续处于告警状态。

附CloudFormation配置代码:

#Policy type: Target Tracking scaling
#Disable scale-in: No

### ECS Service Target Tracking Auto Scaling Configuration
  ECSScalableTarget:
    Type: AWS::ApplicationAutoScaling::ScalableTarget
    Condition: SetTargetTrackingAutoScaling
    Properties:
      MaxCapacity: 1
      MinCapacity: 1
      ResourceId: "serviceName"
      RoleARN: !Sub 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService' 
      ScalableDimension: 'ecs:service:DesiredCount'  ## 1 The initial desired count to start with before Service Auto Scaling begins adjustment.
      ServiceNamespace: ecs

  ServiceScalingPolicyCPU:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Condition: SetTargetTrackingAutoScalingCPU
    Properties:
      PolicyName: target-tracking-cpu
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref ECSScalableTarget
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ECSServiceAverageCPUUtilization
        TargetValue: 70
        ScaleInCooldown: 180
        ScaleOutCooldown: 60
原因分析

你的判断正确:目标追踪扩缩容策略会自动生成两个CloudWatch告警——一个监控CPU利用率高于70%(触发扩容),另一个监控CPU利用率低于70%(触发缩容)。但你的ECS服务配置了MinCapacity: 1和MaxCapacity: 1,实例数被固定为1,无法执行缩容操作。当CPU利用率低于70%时,缩容告警触发,但因已达最小实例数无法执行对应操作,导致告警持续处于“告警中”状态。

解决方案

有两种可行处理方式:

  • 调整扩缩容范围:若业务允许,将MinCapacity设为小于当前实例数的值(比如0),这样CPU利用率低于目标值时,服务可缩容到最小实例数,告警会自动恢复。修改ECSScalableTarget配置:
ECSScalableTarget:
  Type: AWS::ApplicationAutoScaling::ScalableTarget
  Condition: SetTargetTrackingAutoScaling
  Properties:
    MaxCapacity: 1  # 可根据业务需求调整
    MinCapacity: 0   # 修改为允许缩容到0
    ResourceId: "serviceName"
    RoleARN: !Sub 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService' 
    ScalableDimension: 'ecs:service:DesiredCount'
    ServiceNamespace: ecs
  • 禁用缩容逻辑:若业务需要保持实例数至少为1,不想开启缩容,可在目标追踪策略中添加DisableScaleIn: true,这样自动扩缩容只会创建扩容告警,不会生成低CPU的缩容告警。修改ServiceScalingPolicyCPU配置:
ServiceScalingPolicyCPU:
  Type: AWS::ApplicationAutoScaling::ScalingPolicy
  Condition: SetTargetTrackingAutoScalingCPU
  Properties:
    PolicyName: target-tracking-cpu
    PolicyType: TargetTrackingScaling
    ScalingTargetId: !Ref ECSScalableTarget
    TargetTrackingScalingPolicyConfiguration:
      PredefinedMetricSpecification:
        PredefinedMetricType: ECSServiceAverageCPUUtilization
      TargetValue: 70
      ScaleInCooldown: 180
      ScaleOutCooldown: 60
      DisableScaleIn: true  # 添加该参数禁用缩容

内容的提问来源于stack exchange,提问作者Sanjesh M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:25:15