I'm wondering at what stage do I need to increase the image for the RDS MySQL server to a larger CPU/RAM instance.

The CPU utilization graph is near 0. The Avg Free Memory is around 150MB. The Avg Swap Usage is 420MB.

Read Latency is 0-20ms/op it spikes up randomly. Avg write latency is on average 5ms/op but spikes up to 10-20ms/op.

Are there some common rules here that I should follow?


  • 2
    If it's not fast enough and you don't feel like optimizing the database/application, then upgrade the hardware. If it is fast enough and you are spending too much money, then downgrade the hardware. When you start flipping between these states, optimize the database/application. – Eric Hammond Nov 23 '11 at 1:41
  • What is the performance/capacity problem you are trying to resolve? – jeffatrackaid Jun 30 '14 at 18:47

There are no common rules

Performance rules need to be set by business & technical objectives - not arbitrary ones.

What performance issue are you trying to resolve or prevent?

Metrics do not equate performance and often have little to to do with business or even technical objectives.

Typically I look at two aspects of performance.

  • What metrics do I need to monitor that meet performance objectives?
  • How much resource overhead do I wish to maintain to assure I meet these performance objectives.

Focusing purely on database resource metrics in absence of other data is likely not very useful. These metrics need context - otherwise it is just premature optimization.

Metrics like these are useful for capacity planning if you know your utilization rates.

So maybe more important questions would be:

  • At peak usage levels is my application performing within acceptable limits?
  • At peak usage, what is my resource utilization.?
  • With the expected growth, what will be my resource utilization?

Too often I find people focus on what I call ping, power and pipe (CPU/Disk/RAM). Rarely are these the important things to focus on.

Getting data and setting goals to the questions above will help you make scalability decisions with both technical and business justifications.


From what I've seen for RDS instances, that FreeableMemory is fairly low and SwapUsage is relatively high. It seems that your workload is memory intensive and would improve with additional memory at the very least.

For more consistent latencies, Provisioned IOPs is the way to go if you've already allocated at least 300GB of storage: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.