Why is my burst balance value low in my RDS DB instance? How do I troubleshoot this issue?
Last updated: 2022-07-29
My Amazon Relational Database Service (Amazon RDS) for PostgreSQL DB instance has a low burst balance. I want to prevent this from happening.
Amazon RDS DB instances use Amazon Elastic Block Store (Amazon EBS) volumes for storage.
Provisioned IOPS SSD (io1) volumes provide consistent IOPS performance. General Purpose SSD (gp2) volumes depend on the storage size allocated to the DB instance. The IOPS for a gp2 volume is the size of the volume in gibibytes multiplied by 3, with a minimum of 100 IOPS (at 33.33 GiB and below) and a maximum of 16,000 IOPS (at 5,334 GiB and above). For example, if your volume has 100 GiB, then your volume has baseline performance of 300 IOPS.
Regardless of the size, a gp2 volume has an initial I/O credit balance of 5.4 million I/O credits. This is enough to sustain the maximum burst performance of 3,000 IOPS for at least 30 minutes. When a volume requires more than the baseline performance I/O level, the volume draws on the I/O credit balance to perform at the required level.
When the burst balance of a volume is depleted, the volume returns to its baseline performance values. Users aren’t charged extra when the burst balance is depleted. The volume stays at its baseline until IOPS use is lower than the baseline. The burst balance can then begin to refill.
Any gp2 volume larger than 1 TiB has a baseline performance that is greater than the burst performance of 3,000 IOPS. For such volumes, burst is irrelevant because the baseline performance is better than the 3,000 IOPS burst performance.
However, depending on the amount of storage requested, Amazon RDS automatically stripes across multiple Amazon EBS volumes to enhance performance. Therefore, a total allocated storage of 1 TiB might be striped to multiple smaller volumes, and each volume has a burst performance of 3,000 IOPS.
To identify the number of volumes for an RDS instance, turn on Enhanced Monitoring and check the number of volumes in the Physical Devices console.
Troubleshooting a low burst balance value
Follow these steps to troubleshoot a low burst balance:
- Verify that the SQL queries need to be optimized by turning on Performance Insights for Amazon RDS.
Warning: Consult with your organization’s database administrator, if needed. To learn about database engines that you can use with Performance Insights, see Monitoring DB Load with Performance Insights on Amazon RDS.
- If the workload is running as expected or tuning the SQL queries is not fixing the issue, determine whether you need to increase the DB instance storage size to achieve a higher IOPS capacity. Amazon RDS doesn’t allow you to reduce your amount of storage after it has been allocated. Increase the storage capacity only after all other tuning options are verified.
- Scale up your storage class to improve performance or change the storage type from gp2 to io1 and assign the required IOPS.
Specify the amount of storage that you want to allocate. Then, specify the amount of dedicated IOPS that you want.
- If you notice throttling of IOPS or throughput on a DB instance, scale up the instance class to get a higher throughput or IOPS capacity.
Note: Review and choose the instance class that's best suited for your needs because io1 volumes are expensive when compared to gp2.
Troubleshooting enhanced modeling for micro-bursting
For more information about micro-bursting in EBS volumes, see How do I troubleshoot the latency of Amazon EBS volumes caused by an IOPS bottleneck in my Amazon RDS instance and review the Micro-bursting section.