Mysql – Amazon RDS: What are IO Requests

amazon-rdsioMySQL

I have an RDS instance that is costing me a lot of money. From my account activity on amazon I see that the instance has had about 800,000,000 IO requests over the past 7 days.

To give you a little perspective, my app only gets about 6,000 unique visits a day and it doesn't make that many database connections.

So, what exactly is an IO Request, and why would that number be so unearthly high? I'm willing to do whatever it takes to my app to reduce that cost if necessary, but I'm not sure what's really going on.

I would appreciate your thoughts.

Best Answer

Ah, Amazon Web Services. One of the biggest moneysinks available. Very good, but not always cheap. Actually, almost never cheap, and always difficult to estimate expenses.

An IO request is a disk-operation. Be that a read, or a write, you're basically being charged with how much data you're getting off their system. It's insane.

You can estimate the IO Requests you're making, by looking at iostat.

800,000,000 IOrequests in 7 days.. That's ~=1300 IOPS . Wow. That's some wickedfast performance.

As an example, a medium sized website database might be 100 GB in size and expect to average 100 I/Os per second over the course of a month. This would translate to $10 per month in storage costs (100 GB x $0.10/month), and approximately $26 per month in request costs (~2.6 million seconds/month x 100 I/O per second * $0.10 per million I/O).

From http://aws.amazon.com/ebs/ about 90% of the way down the page

If you really want to reduce what this is costing you, it might be time to look at whether RDS is really the best fit for your application and project budget.

If you've only got 6k hits a day, you might do better on cost and performance with a dedicated server (preferably 2 of em, one for DB, one for web services). It's actually a bit more difficult to make that call as you've not said too much more about your application.

Related Topic