How to evaluate a hosting service for Magento?
Introduction
With so many choices in hosting service it is difficult to decide what to use for hosting of a production Magento server. The first question most commonly asked is – should one use a physical (or bare metal) server or a virtual machine (or cloud server)? Many people think the obvious answer is Virtual Machines. After all this is the way the world is thinking and all cannot be wrong. But, let us take a closer look for Magento hosting. Magento is typified by 2 factors – high CPU utilization for php interpretation and mysql performance limited by both CPU and disk writes typically for operations such as reindexing and high order volumes.
In this article we talk about these factors and how to help evaluate your preferred platform.
CPU speed
Most cloud service providers like AWS, Azure or Softlayer do not define what you get when you ask for say 2GHz CPU – do you get 100% of the power of the CPU or is the CPU shared?
Hypervisor technology used to create Virtual Machines, easily allows one to overcommit CPU. Overcommit means that the number of CPUs on a physical hardware can be lesser than the number of CPUs in all the VMs running on that server. Emperical studies such as here(https://www.datadoghq.com/the-top-5-ways-to-improve-your-aws-ec2-performance/) have proven that overcommit does happen.
This means that test results and live site performance are subject to current usage of your neighbours.
In addition, VMs need hypervisors to run beneath the VM – this adds to overhead as well as latency.
In a study by Forrester a case was made for using bare metal infrastructure, now that some leading cloud providers have made it easy to spin a new bare metal server.
On a physical or bare metal server, processor power, disk space, memory and other system resources are not shared with noisy neighbours so there is high correlation between test results and live performance.
Disk speed
High speed disks vs network access disks. A SSD or a 15K SAS for example can give the boost you need when upload products and reindex or you get many orders such as during a holiday season.
- Unthrottled performance. When you buy guaranteed IOPs for example, what happens when you exceed the limit? What if you have a burst need that exceeds the provisioned IOPs?
- Use a locally attached SSD where available vs a network storage. Local storage will be faster than network storage by orders of magnitude.
- Consider RAID configurations for better performance
Here is some raw disk performance metrics1 we got when testing some popular hosting providers
Provider Softlayer Softlayer Softlayer Azure Azure AWS Ukfast DO Type Physical Physical VM VM-D2V2 VM-D2V2 EC2 Physical VM Disk Magnetic SSD Local Default Blob EBS SSD Default unbufferred 144 451 200 20.6 65 57 130 150 bufferred 155 602 217 1000 65 263 1500 300
Notes
- All data in MB/sec reported by the linux dd command/li>
- Unbuffered
dd if=/dev/zero of=/tmp/test bs=256M count=4 oflag=dsync
- bufferred
dd if=/dev/zero of=/tmp/test bs=256M count=4
- Digital Ocean performance varied in a wide range 55 MB/s to 150MB/s
This simple test shows relative disk performance on various platforms without a RAID configuration.
(Refer Roman’s wiki)
Which hosting service is preferred?
- Physical (or bare metal) servers give the best “performance” of Magento production hosting. The key reason is that they scale in a predictable way when traffic peaks.
- You can scale horizontally with cloud servers – many hosting providers now give the option to mix VMs and bare metal on the same subnet. >We prefer such vendors.
- Not all VMs and servers are made equal – test before you commit.