Reason to Upgrade Your RDS MySQL instance to Provisioned IOPS

High-performance, provisioned IOPS storage was available in Amazon RDS for more than a year ago, as you can read from AWS article published on 9/25/2012. Recently our MySQL database has grown and contains more than 200 databases, with some of them containing millions of rows (and growing rapidly). Our Multi-AZ RDS instance is db.m1.large which provides pretty decent performance even when it is not EBS optimized. Squeezing more performance was one of my goals when decided to take the road to enable IOPS. You can start from 1000 IOPS with 1000 IOPS increments. I decided to go with 1000 for a start.

Process for upgrading Multi-AZ instance is far from complicated - after making your selections through the dashboard UI and deciding to apply changes immediately, instance performs automated fail-over which minimizes the downtime for merely minute or so until DNS reacts to changes. Total upgrade took about 5 hours but system was never down and I did not notice any slowness.

Once done, perhaps most impressive results can be seen at Read Latency graph - the difference can not only be seen but also felt - every web app suddenly became more responsive and more snappier. Which is even more interesting that the load on the server did not get lower but on the opposite side - new apps are added every day.

Average read latency was ~ 12ms, after upgrade - 1.6ms. Astonishing. Chart below shows how remarkable the result was:
RDS MySQL read latency after upgrading to 1000 IOPS

Conclusion: if you have not upgraded your RDS to IOPS yet - do it and get single-digit-millisecond read latency.

PS: I did not start doing any performance tests, perhaps next time on clean machines. If you are interested, here's one blog post which inspired me to actually do the upgrade.

Comments

Popular posts from this blog

Stubbing and Mocking Static Methods with PHPUnit

Enable HTTP/2 Support in AWS ELB

How To Attach Your EBS volume to multiple EC2 instances