Тестирование интернет-магазина на WooCommerce с 500K товарами

В данной статье мы опишем вам наш опыт запуска теста высоконагруженного интернет-магазина с базой в 500К товаров и покажем результаты работы такого интернет-магазина.
Ранее мы писали общий тест высоконагруженного тестирования WooCommerce, вы можете с ним ознакомится в данной статье:
Нагрузочное тестирование WooCommerce — сколько продуктов может обработать движок
Исходные данные для тестирования
Адрес тестового сайта: https://highload.premmerce.com/
Количество товаров: 500000
Количество категорий: 1000
Количество брендов: 100
Количество атрибутов: 100
Активные плагины:
- WooCommerce
- Premmerce (Premium)
- WP Rocket
- Yoast seo
- Premmerce Search
- Premmerce WooCommerce Brands
- Premmerce WooCommerce Product Filter
- WooCommerce Permalink Manager
- Premmerce WooCommerce Wishlist
- MetaSlider
Шаблон: GrandStore.
Генерация всех демо-данных на сайт происходила с помощью плагина: Premmerce Dev Tools
Произведенные дополнительные настройки:
- Оптимизированный фильтр за счет использования плагина Premmerce WooCommerce Product Filter
- Установленный Rocket cache
- Включена настройка Rocket cache sitemap.xml based cache preloading
- Включена настройка Rocket cache Enable cache for logged in users
- Включена настройка Premmerce — Use the same cache for all logged in users
Очень важным моментом для такого магазина является грамотная работа с настройками кеша. Очень важно сделать полный прелоад кеша для всех страниц, а также в будущем осторожно с ним работать — не удалять для всего сайта, а лишь для измененных страниц.
Параметры сервера
Конечно же, для такого интернет-магазина лучше настраивать индивидуально сервер, либо в крайнем случае использовать мощный VDS.
Для данного теста мы включили следующие основные настройки:
- Xeon® CPU E3-1275 v6 @ 3.80GHz
- SSD
- RAM 2GB
Результаты тестирования
После наполнения демо-данными, получился сайт следующего вида:
Google PageSpeed Insights
В первую очередь, после подогрева всего сайта с помощью кеша, мы протестировали его с помощью Google PageSpeed Insights. Результаты получили следующие:
Главная страница:
Страница категории:
Страница товара:
В результате на всех основных страницах мы получили неплохой результат.
Высоконагруженное тестирование
Для того, чтобы протестировать нагрузку в динамике при большом количестве одновременных пользователей, мы использовали сервис: https://loadimpact.com/
В настройках тестирования, мы указали 50 одновременных виртуальных пользователей.
Home page | Категория | Фильтр категории с 500 тов. | Фильтр категории с 57000 тов | |
The number of all queries | 284 | 284 | 272 | 261 |
The number of virtual users | 50 | 50 | 50 | 50 |
The minimum page load time | 380.18ms | 292.95ms | 1.76s | 1.88s |
The average page load time | 594.99ms | 710.92ms | 2.15s | 2.38s |
The maximum page load time | 2.1s | 2.28s | 3.13s | 4.77s |
The minimum server response time | 110.19ms | 120.73ms | 847.94ms | 903.7ms |
The average server response time | 181.43ms | 219.49ms | 1.06s | 1.17s |
The maximum server response time | 760.3ms | 1.27s | 1.94s | 3.14s |
Как мы видим, что среднее время загрузки страницы увеличивается лишь при фильтрации до 2,4 секунды, что все-равно меньше чем нормальное время до 3 секунд.
Все остальные страницы показывают отличный результат полной загрузки страницы до 1 секунды и время ответа сервера до 200 мс, что лучше, чем большинство сайтов в интернете.
Впрочем фильтры также поддаются кэшированию, после чего будут выдавать результат как весь остальной сайт и данные моменты можно уже оптимизировать индивидуально в реальных условиях.
Напомним, что мы тестировали 500К товаров в каталоге при 50К товаров в одной категории с 100 атрибутами — данные условия немного не реальны, но мы решили взять по максимуму, чтобы продемонстрировать все возможности.
Выводы
В целом наш тест лишний раз подтвердил, что высоконагруженные магазины с большими базами запускать с помощью WordPress, WooCommerce и плагинами Premmerce можно.
Если у вас есть дополнительные вопросы ибо необходимо помочь в настройке или оптимизации вашего интернет-магазина под большую базу товаров или нагрузку, обращайтесь в чат или оставляйте коменты, будем рады помочь.
- Предыдущая « Плагины и методы для бекапов в WordPress
- Следующая Дайджест новостей ImageCMS: 20 апреля, 2018 »
Не хватает тестирвоания на реальном сайте. Как правило проблемы возникают при оформлении заказов, сжатии изображений, генерации мета-тегов плагином Yoast и т.д. По началу всегда все отлично работает, но, как показывает практика, в процессе работы сайта анчинается работа с БД, что приводит к зависанию.
Согласен, что с живым сайтом может быть больше проблем, но к сожалению реальных проектов с такой базой товаров не так много, если нам вдруг такой подвернется, обязательно расскажем как его оптимизировали.
Мы скорее преследовали цель развенчать мифы о том, что движок не выдержит такой большой базы. И видно, что плагины, которые работают с БД — тот же Yoast, Поиск, Фильтр, выдерживают такое количество, потому мы можем делать выводы, что большая БД не будет сильной проблемой для большей части функционала.
А сравнивали с интернет магазином на ImageCms (CodeIgniter) и ImageCms (Woocommerce) при таком же кол-ве товаров/категорий/брендов/атрибутов фильтра?
интересно какие нагрузки каждого сайта будут, чтобы понимать разницу в затратах на выделенный сервер..
Основной сайт вижу так же используете на WordPress. Но тут вопросов нет.
Когда-то мы проводили похожее тестирование для версии 4.12, правда тестировали только с базой 100к товаров. Но там использовалось другое кэширование, совсем другие результаты быстродействия показывал шаблон, не было столько атрибутов у товаров и тд, так что эти два анализа довольно тяжело сравнивать. Но вот статья, если интересно:
https://www.imagecms.net/blog/news/nagruzochnoe-testirovanie-imagecms-shop
Мы никогда не поднимали магазин на 500к товаров на 4х версии, потому нам сложно с точностью сказать, какие затраты на сервер будут.
Но по ощущениям, версия на Woo без танцов с бубном и без особо серьезного железа выдерживает 500к товаров, пообещать, что такой же тест пройдет 4х версия, мы не можем. Скорее всего на 4х версии поднять 500к будет реально, но с железом нужно будет серьезно заморочиться и вряд ли выдаст такую же скорость, как 5х версия.