How do I resolve issues with DynamoDB auto scaling?
Last updated: 2020-07-09
I enabled Amazon DynamoDB auto scaling on my table, but it's not working as expected or my read/write activity is still being throttled.
DynamoDB auto scaling creates Amazon CloudWatch alarms on your behalf. When an alarm is triggered, the CloudWatch alarm invokes AWS Application Auto Scaling, which in turn notifies DynamoDB to adjust the table's provisioned throughput capacity.
DynamoDB auto scaling modifies provisioned throughput only when the workload stays depressed or elevated for several minutes. For example, assume that you set the minimum read capacity units (RCUs) to 100 and the target utilization to 70 percent:
- DynamoDB auto scaling increases provisioned capacity when utilization exceeds 70 RCUs for at least two consecutive minutes.
- DynamoDB auto scaling decreases provisioned capacity when utilization is 20% or more below the target for 15 consecutive minutes (50 RCUs).
To troubleshoot problems with DynamoDB auto scaling:
- Be sure that you don't delete the CloudWatch alarms created that DynamoDB auto scaling creates. If you do, DynamoDB auto scaling might not work as expected. If you accidentally delete the CloudWatch alarms, then disable and enable auto scaling on the table. When you do this, CloudWatch automatically recreates the alarms.
- Don't rely on DynamoDB auto scaling to handle occasional short-duration activity spikes. DynamoDB auto scaling works best when there are gradual increases or decreases in traffic. The table's built-in burst capacity handles occasional activity spikes.
- If the table's traffic is frequently unpredictable, use an UpdateTable operation to set the billing mode to PAY_PER_REQUEST. This enables on-demand mode, which instantly adapts throughput to handle the workload.