My Auto Scaling group is not scaling out as expected.

Several factors can affect scaling of an Auto Scaling group. These factors include:

You can suspend and resume Auto Scaling processes by using the AWS Command Line Interface (CLI). This is useful when you need to perform application maintenance without triggering any Auto Scaling processes in your Auto Scaling group. Suspended Auto Scaling processes must then be resumed to restore scaling. For more information, see Suspend and Resume Auto Scaling Processes, including Suspend and Resume Processes Using the AWS CLI.

An Auto Scaling cooldown period takes effect when instances are launched or terminated in response to a scaling action. The cooldown period is intended to allow enough time for instances to launch or terminate in response to the scaling action. Only then can the impact of scaling activities on application performance be reliably evaluated. When the cooldown period has elapsed, additional scaling operations can begin as needed to scale out or scale in. When you create an Auto Scaling group, a default cooldown period of 300 seconds applies to all scaling activities in the group. Because the default cooldown period might not be optimal for your application, it is recommended that you create appropriate CloudWatch alarms and scaling policies to associate with your Auto Scaling group, as described in Dynamic Scaling.

Generally speaking, scaling policies that scale up quickly and scale down slowly provide superior application performance. Your actual scaling policy will depend on the application, so you should test scaling policies extensively before implementing them in production. You can view scaling history in the AWS console or use the describe-scaling-activities command to view instance launch and termination data with associated cooldown values. For more information on cooldowns, see Understanding Auto Scaling Cooldowns.

If you have a lifecycle hook configured for your Auto Scaling group, an instance might be in a state of Pending:Wait or Terminating:Wait. All scale out and scale in activities are suspended until the instance moves out of the Pending:Wait or Termination:Wait state.
To determine if you have a lifecycle hook configured, run the following command from the AWS CLI:

aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name my-asg-name

To complete a lifecycle action, you can run the following command using the lifecycle action token that was sent to the configured notification target:

aws autoscaling complete-lifecycle-action --lifecycle-hook-name my-lifecycle-hook --auto-scaling-group-name my-asg --lifecycle-action-result CONTINUE --lifecycle-action-token bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635

If no action is taken, the instance is terminated when the configured timeout value has elapsed (default is 1 hour). For more information on lifecycle actions, see Considerations When Using Lifecycle Hooks and the AWS CLI complete-lifecyle-action reference.

If you have reached a limit, an attempt to launch an instance fails with a message similar to the following:

Launching a new EC2 instance. Status Reason: Your quota allows for 0 more running instance(s). You requested at least 1. Launching EC2 instance failed.

To increase the limit, contact AWS support at https://console.aws.amazon.com/support/home#/case/create. For more information on limits, see AWS Service Limits.

If it appears that your CloudWatch alarm is not triggering scale out or scale in of your Auto Scaling group, review How do I ensure that Amazon CloudWatch alarms trigger scaling of my Auto Scaling group?

Auto Scaling group, Amazon CloudWatch, lifecycle hooks, cooldown, scale out, scale in, troubleshooting


Did this page help you? Yes | No

Back to the AWS Support Knowledge Center

Need help? Visit the AWS Support Center.