如何评估我的托管服务提供商声称“针对Magento进行了优化”?

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:

  • a correct answer would say "no, Magento is not an unusual PHP/MySQL application, scaling it to 10,000 users is only trivially different from scaling Drupal, WordPress, or Joomla! to that level" or "yes, Magento has the following characteristics which require the application of non-trivial config changes, optimization techniques, or server tuning, that you would use for no other PHP/MySQL application." So there does exist a definitive correct answer to this question.
  • I don't plan on actually implementing such tuning myself: if I did, I'd probably ask Server Fault. I'm asking about Magento's guts, I'm asking about why it performs the way it does and asking for comparisons to the internals of similar apps, so I'm asking Stack Overflow.

In addition to the normal:

  • php version
  • apc, caching
  • Memory, cpu, disk space, bandwidth, etc.

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 :

  • A PHP bytecode optimizer like APC (since a single call in magento can end into several tens of thousands of PHP line codes being executed)
  • A memcached to optimize result & session storage used by magento (hopefully magento has configuration options that enable it to take memcached as cache engine)
  • Ideally a varnish full page cache proxy , but beware, this needs very tricky varnish config to have magento gracefully working.

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.