Всем известно, что 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.
Тестируемые конфигурации:
- — Без кэширования
- — Включен кеш
- — Включен кеш + php-apc в local.xml
- — Включен кеш + php-apc в local.xml + склейка js/css
- — Включен кеш + php-apc в local.xml + склейка js/css + компиляция
- — Включен кеш + склейка js/css + полностраничный кеш
- — Включен кеш + php-apc в local.xml + склейка js/css + полностраничный кеш (FPC)
- — Включен кеш + php-apc в local.xml + склейка js/css + полностраничный кеш (FPC) + Varhish
- — Включен кеш + php-apc в local.xml + склейка js/css + полностраничный кеш (FPC) + Redis
Все тесты проводились 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. Конфиги использовались стандартные.