We are in the process of deploying our Magento shop to AWS EC2 but are seeing some serious performance degradation. Our development server has the same set of the Magento code as the production server.
Here are the details for the development server:
Ubuntu Server 12.04 4 virtual CPU's (the host is ESXi 5.5) (physical CPU is i7-4790 @ 3.6GHz) 4Gb memory MySQL 5.5 on the same VM Redis cache enabled for backend and session (on a different VM) APC cache enabled local network
Using the firefox Network monitor, the waiting time to access a product page is approx 500ms.
For the production server(s):
Ubuntu Server 12.04 HVM frontend and admin are on different hosts, both have instance type m3.medium (1 virtual CPU, 3.75Gb memory, physical cpu is probably Xeon E5-2670 v2 @ 2.5GHz) code is mounted from admin to frontend using NFSv4, with these options: rw,insecure,no_subtree_check,async MySQL 5.5 on Amazon RDS in the same region, same subnet but different availability zone (instance type db.m3.medium, 1 virtual CPU, 3.75Gb memory, query_cache_size is set to 16M... for some reason the default was set to 0) Redis cache enabled for backend and session (on a different EC2 instance) APC cache enabled AWS region is US East (latency from our office to AWS US East is about 250ms)
Using the firefox Network monitor, the waiting time to access a product page is approx 2000ms.
We tried using Magento in the local filesystem instead of NFS, but it doesn't seem to reduce the waiting time.
We tried accessing a page that doesn't hit the database (such as a Magento 404 page), and the waiting time in AWS EC2 is approximately 4 times longer than our development server.
We are not sure if moving from m3.medium to say, a c3.xlarge instance type will make any difference.
Can anyone provide any insights?
Update
We just created a new c3.xlarge instance (4 virtual CPU's and 7.5Gb memory) and put Magento there. The waiting time reduces to approximately 1500ms but this is still nowhere near 500ms on our development server.