Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a micro instance mounted with an EBS volume. I have to pay per million read/writes to the EBS volume.

But by the very nature of EBS I/O is very slow and consequently services like MySql is slow.

Can someone suggest ways to speed up my instance (barring the obvious comment that micro instances are not for such use)?

share|improve this question
up vote 6 down vote accepted

In my experience and based on their popularity, EBS volumes are not slow for most applications (including MySQL) especially if you are using an EC2 instance that has high IO bandwidth.

The t1.micro instances have "low" IO bandwidth, but I still wonder if you're really hitting a performance problem there. Do you have metrics on iowait that show this is the issue?

I suspect it's more likely that the t1.micro instance type is not going to be able to sustain heavy CPU activities like those that might be required in your application.

I use t1.micro with MySQL/Apache/etc. for dynamic web sites that have almost no users and it works fine, but as soon as you pile on any sort of sustained load it cuts out as designed.

Given the small memory size of t1.micro, MySQL is not going to be able to cache much of the database tables in memory, so you might get hit by its need to keep going to disk to get results. This would be a problem no matter how fast EBS IO is because it's never going to be as fast as direct memory access.

If you still think it's an EBS issue, you might try adding a caching layer so that you make fewer hits to the MySQL database. However you're quickly going to run into the memory limit on the t1.micro. Perhaps take a look at the new ElastiCache service from AWS: http://aws.amazon.com/elasticache/

If t1.micro IO is the limiting factor, you're not going to fix it with RAID as all of the EBS volumes in the RAID will be using the same IO channel together.

share|improve this answer

Usually, people work around EBS's slowness and reliability issues by mounting 4-10 EBS volumes and RAIDing them together. Gives you more consistent performance as well as improved performance.

share|improve this answer

Take a look slides from Pinterest guys (2015): https://www.percona.com/live/mysql-conference-2015/sites/default/files/slides/all_your_iops_are_belong_to_usPLMCE2015.pdf

Kernel 3.13 + EXT4

4K RAID block, EXT4, kernel 3.13 Write throughput 87MB/sec 99th-percentile latency: 124ms

64K RAID block, EXT4, kernel 3.13 Write throughput 88MB/sec 99th-percentile latency: 122ms

Kernel 3.18 + XFS

4K RAID block, XFS, kernel 3.18 Write throughput 550MB/sec 99th-percentile latency: 3.7ms

64K RAID block, XFS, kernel 3.18 Write throughput 650MB/sec 99th-percentile latency: 6.2ms

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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