Всем известно, что Magento - как лайнер, такая же большая и прожорливая. Но обладает громадным функционалом, с которым не могут сравниться другие решения.

Чем быстрее генерируется страница - тем лучше для SEO и приятней пользователю. Проведем тестирование.

Тестовый сервер: 8 x Intel(R) Xeon(R) CPU E5-2630 @ 2.30GHz, 2GB RAM, nginx/1.4.7 + php-fpm 5.4.26, MySQL Percona 5.6.16-64.1. Канал - 1Гбит/сек (как у нашего хостинга).

Magento 1.8.1.0 CE с установленной демо-датой. Тестирование - через Siege.


Тестируемые конфигурации:

Все тесты проводились 5 раз, чтобы получить максимально средний результат. Кроме тестирования с Varnish, при пятом запуске ДЦ подумал, что мы проводим DDoS сервера :(


Диаграмма 1. Average load сервера в процессе тестирования. Меньше - лучше. (Кликните на картинку для увеличения).



Диаграмма 2. Всего было выполнено успешных запросов за 15 секунд. Больше - лучше. (Кликните на картинку для увеличения).

Можно легко заметить, что в лидеры выбрался Varnish. Но не всё так просто - у варниша есть и свои минусы: выдача старого кеша, блокировка headers, утечка памяти, снижение производительности, неверное кеширование мобильной темы. Этого бывает достаточно, чтобы от него отказаться.



Диаграмма 3. Среднее количество запросов в секунду. Больше - лучше. (Кликните на картинку для увеличения).

Очень хорошо себя ведёт полностраничный кеш - увеличение производительности почти на порядок. Однако и здесь есть свои подводные камни - блоки в header магазина могут кешироваться слишком сильно, что у одного пользователя будет показываться блок информации, который показывался у другого.



Диаграмма 4. Среднее время генерации страницы, сек. Меньше - лучше. (Кликните на картинку для увеличения).



Диаграмма 5. Средний генерируемый траффик за 1 сек. Больше - лучше. (Кликните на картинку для увеличения).

Значения графика - предсказуемы исходя из вышепредставленных результатов.



Диаграмма 6. Удельная "стоимость" нагрузки за 1 запрос в секунду. Меньше - лучше. (Кликните на картинку для увеличения).

Стоит отдельно упомянуть о варианте с Redis. Он показывает производительность чуть выше среднего кеша. Но демон redis-server использовал всего одно ядро процессора. То есть при правильной настройке он будет есть все 8 ядер системы, тем самым можно прогнозировать hit rate около 550 запросов в секунду, что на 40% больше выйгрыша при использовании полностраничного кеширования.

Применение компиляции тоже даёт хороший прирост в производительности - около 20%.

Из необычных результатов можно выделить небольшое падение производительности при использовании php-apc совместно с полностраничным кешем.



Итог: При грамотной настройке магазина и Varnish+FPC ваш магазин будет летать. Только на это нужно много человек-часов труда. И много опыта.

Наиболее любознательные могут скачать табличку с исходными данными здесь

P.S. Да, не протестировали разницу работы каталога с включенным/выключенным flat.

P.P.S. Оптимизацию кода никто не отменял.

P.P.P.S. Конфиги использовались стандартные.