I'm currently responsible for running, modifying, and tuning a Magento installation. I'm not satisfied with our current hosting plan, and I'm looking for alternatives. I see several hosting providers that advertise that they optimize their servers for Magento (e.g. Nexcess, MageMojo), but they all seem to be short on technical details. What does one do to a server to optimize it for Magento that is different from optimizing for any other heavyweight PHP/MySQL application?
My current understanding is that because of its EAV data model and its massive XML configuration files, Magento performance is almost always I/O-bound - but my understanding is that that's true for most other PHP/MySQL applications at scale. RAM and cores are cheaper than SSD space, basically.
How can I tell whether these "optimizations" are worth the premium that Magento-oriented hosting providers charge? Is there a technical basis to the claim of "optimization" or is optimizing for Magento the same as optimizing for performance on any other PHP/MySQL application?
Note: since this question brushes up against the site's guidelines, let's be clear on a couple of things:
In addition to the normal:
With something like magento there are concerns of PCI compliance. So you need to understand the physical security of the data centers, mysql setup (make sure they are not shared sql servers), etc. It's best to get a dedicated server, or at least a vps, so that your resources/data is isolated from everyone else's which will help with security.
I have worked with some reputable Magento hosting providers, so if you have some you are checking out, let me know, and I will let you know my honest thoughts
Magento is a cpu consuming beast that is more impacted by its internal complex multilayer object architecture (which allows very important customizations "out of" magento core code but that also implements a near full facade for Zend Framework which itself is not known for being light) + pseudo orm collection code that is really suboptimal than its underlying complex but not that bad EAV DB model.
So , a good way to optimize magento for a hoster is to provide :
The full page cache will really release the load on the php code execution for having page displayed. The memcached will give fast access to last known results & session data The bytecode optimizer will reduce the load of php code execution server side.
Then ,the DB itself has to be optimized in a more "standard" way using InnoDB settings matching CPU cores & all the other well known mysql optimizations.