Главная / Блог / Обзоры / Нагрузочное тестировние WooCommerce — сколько продуктов может обработать движок?

Нагрузочное тестировние WooCommerce — сколько продуктов может обработать движок?

05 марта 18
Reading Time: 4 minutes
10 комментариев
1 Star2 Stars3 Stars4 Stars5 Stars (5 votes)

Продуктами и услугами нашей компании пользуются различные интернет-магазины с различными типами и количеством товаров. Достаточно часто попадаются клиенты, которым необходимо запустить магазин с 50-100К товаров и обеспечить нормальную скорость загрузки всех страниц до 2 секунд при невысоких затратах на хостинг.

Мы задались вопросом, может ли выдержать интернет-магазин на Woocommerce такие каталоги при достаточных нагрузках и провели свое собственное исследование, которым и хотим с вами поделиться.

В первую очередь мы решили поискать такие кейсы на официальном сайте Woocommerce и среди владельцев магазинов, однако четкого ответа не нашли.

Официальная документация также не дает определенного ответа на этот вопрос, а только говорит, что это зависит от:

  • Сервера хостинга и компании
  • Количества заказов
  • Трафика

Подготовка к тестированию

Поскольку мы сталкивались с большими магазинами и знаем, что потенциально может влиять на загрузку, мы выделили для себя следующие узкие страницы для исследования:

  • Главная страница
  • Каталог товаров
  • Страница отдельного товара

Также на производительность очень влияет наличие атрибутов у товаров, наличие вариативных товаров, фото и дополнительных фото товаров.

Тестирование мы проводили на стандартном шаблоне WooCommerce Store Front, а также на базовой системе WordPress+WooCommerce без дополнительных плагинов, в том числе плагинов для кэша.

Тестовая база товаров

Чтобы сгенерировать необходимое количество товаров для теста мы разработали собственные инструменты и поместили их в плагин Premmerce Dev Tools.

С помощью данного плагина мы сгенерировали следующую базу данных:

  • Количество товаров — 50К
  • Количество категорий — 50
  • Количество товаров в категории — 1000
  • Количество атрибутов — 15
  • Количество значений в атрибуте — 7
  • Количество атрибутов в товаре — 15
  • Количество похожих товаров — 50К
  • Количество вариативных товаров — 1-3
  • Количество фото у каждого товара — 3

В результате база данных у нас выросла до следующих показателей:

  • Размер базы данных — 338 Мб
  • Количество запросов постов — 299999
  • Количество записей постмета — 1127568

Параметры тестового хостинга

Для тестирования нагрузки мы выбрали обычный хостинг со следующими параметрами:

  • Одно ядро от процессора Е3 — cpu: 3500.034 MHz
  • RAM: 512 Mb
  • Максимальное количество процессов: 20
  • Доступная память: 2048 Mb
  • Лимит работы с диском: 5 Mb/s

Сервис для тестирования

Для тестирования быстродействия и нагрузки мы использовали следующий сервис: Load Impact.

Тестирование главной страницы


Результат тестирования:

  • Количество всех запросов: 286
  • Минимальная продолжительность загрузки страницы — 413.9 ms
  • Средняя продолжительность загрузки страницы — 569 ms
  • Максимальная длительность загрузки страницы — 1.89 s
  • Минимальный ответ сервера — 163.87 ms
  • Средний ответ сервера — 298.85 ms
  • Максимальный ответ сервера — 1.64 s
  • Количество виртуальных пользователей — 50

Вывод

В целом, как видим, на скорость загрузки главной страницы большое количество товаров в базе не очень влияет. Получаем неплохой средний результат загрузки страницы — до 2 секунд.

Тестирование небольшой категории товаров без фильтров

База магазина — 50К товаров, в категории, которую тестировали, находится 1К товаров.


Результат тестирования:

  • Количество всех запросов: 275
  • Минимальная продолжительность загрузки страницы — 500.37 ms
  • Средняя продолжительность загрузки страницы — ms 591.16
  • Максимальная длительность загрузки страницы — 2.14 s
  • Минимальный ответ сервера — 217.69 ms
  • Средний ответ сервера — 296.28 ms
  • Максимальный ответ сервера — 1.84 s
  • Количество виртуальных пользователей — 50

Вывод

Как мы видим, несмотря на обилие товаров в базе, если отдельно взятая категория содержит около 1К товаров, то показатели нагрузки и скорости открытия незначительно отличаются от показателей главной страницы.

Тестирование большой категории товаров без фильтров

База магазина — 50К товаров, в категории, которую тестировали, находится 50К товаров.

Результат тестирования:

  • Количество всех запросов: 272
  • Минимальная продолжительность загрузки страницы — ms 598.71
  • Средняя продолжительность загрузки страницы — ms 766.73
  • Максимальная длительность загрузки страницы — 2.93
  • Минимальный ответ сервера — 319.61 ms
  • Средний ответ сервера — 424.54 ms
  • Максимальный ответ сервера — 1.62 s
  • Количество виртуальных пользователей — 50

Вывод

Как видим, большая категория товаров с содержанием в 50К товаров влияет на загрузку страницы, увеличивая продолжительность открытия страницы почти в 1,5 раза. И это даже без применения дополнительных данных, таких как фильтры по категориям.

Данные условия практически нереальные на практике, поскольку такие категории значительно ухудшают навигацию по сайту и мешают дальнейшему продвижению магазина в целом. Рекомендуется разделять на категории, в которых содержится не более 2-3К товаров, в идеале делить на категории по 100-200 товаров при больших базах товаров. Поэтому мы больше не будем проводить тесты с такой большой категорией. Показали этот результат только для наглядности в целом.

Тестирование небольшой категории товаров с фильтрами WooCommerce

База магазина — 50К товаров, в категории, которую тестировали, находится 1К товаров.

Здесь мы применили стандартный виджет для создания фильтра по атрибутам от Woocommerce.

Результат тестирования:

  • Количество всех запросов: 276
  • Минимальная продолжительность загрузки страницы — ms 912.28
  • Средняя продолжительность загрузки страницы — 1.19 s
  • Максимальная длительность загрузки страницы — 3.6 s
  • Минимальный ответ сервера — 575.27 ms
  • Средний ответ сервера — 834.74 ms
  • Максимальный ответ сервера — 3.26 s
  • Количество виртуальных пользователей — 50

Вывод

Как мы видим, наличие фильтров увеличивает продолжительность загрузки страницы каталога примерно в два раза и уже нуждается в автоматизации, особенно за счет увеличения среднего ответа серверу до 800 мс, в сравнении с рекомендованными 200 мс от Google Page Speed Insights.

Тестирование небольшой категории товаров с фильтрами Premmerce

База магазина — 50К товаров, в категории, которую тестировали, находится 1К товаров.

Здесь мы применили разработанный нами плагин для создания фильтров по атрибутам (скоро будет доступен, пока проходит стадию тестирования).


Результат тестирования:

  • Количество всех запросов: 279
  • Минимальная продолжительность загрузки страницы — ms 617.07
  • Средняя продолжительность загрузки страницы — ms 703.85
  • Максимальная длительность загрузки страницы — 2.76 s
  • Минимальный ответ сервера — 280.47 ms
  • Средний ответ сервера — 352.96 ms
  • Максимальный ответ сервера — 2.41 s
  • Количество виртуальных пользователей — 50

Вывод

Как мы видим, использование фильтров Premmerce увеличивает скорость загрузки примерно в 2 раза по сравнению со стандартными фильтрами WooCommerce.

Тестирование страницы отдельного товара

Для теста мы взяли страницу товара, к которому назначены следующие параметры:

  • Количество фото — 3
  • Количество атрибутов — 15
  • Количество вариантов — 2

Результат тестирования:

  • Количество всех запросов: 288
  • Минимальная продолжительность загрузки страницы — 512.88 ms
  • Средняя продолжительность загрузки страницы — ms 625.97
  • Максимальная длительность загрузки страницы — 2.48 s
  • Минимальный ответ сервера — 223.77 ms
  • Средний ответ сервера — 298.91 ms
  • Максимальный ответ сервера — 1.66 s
  • Количество виртуальных пользователей — 50

Вывод

Как мы видим, большая база товаров не сильно влияет на открытие страницы товара. Хотя средний ответ сервера и меньше рекомендованного Google, в целом скорость загрузки очень хорошая.

Общий вывод по работе WooCommerce с большой базой товаров

В данном исследовании мы тестировали производительность Woocommerce без применения каких-либо плагинов для кэширования или специальных настроек хостинга, что конечно даст свой результат. В следующих статьях мы проведем исследование возможностей кэширования и оптимизации магазина за счет настроек хостинга.

В целом очевидно, что WooCommerce справляется с большими базами товаров и при правильных настройках может работать с базами в 50К, 100К и больше товаров.

В дальнейшем мы будем еще подробнее тестировать быстродействие магазина при наличии различных дополнительных установленных плагинов и если они будут значительно влиять на результат, будем предоставлять дополнительные статьи и результаты исследований.

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

Comments (10)
  • mrsobolle:

    Да, неплохое исследование.
    Жаль, что нет тестов о влиянии большого количества категорий и товаров отнесенных к большому количеству категорий на производительность woo.
    Например, 30к товаров, 4000 категорий и каждый товар относится к 50 — 600 категориям.
    Как ни странно, это актуально, в связи с требованиями SEO.
    Для каждого товара поисковые роботы хотят видеть как можно более прямой путь страницы без аргументов запроса.
    (У нас, в частности, колесные литые диски. Категории — это автомобили Марка/Модель — 3800 шт. Каждый диск относится к 50-200 категориям)

  • Александр:

    Есть ли обновленный тест ?

    И если увеличивать кол-во виртуальных пользователей ?
    То с какой прогрессией будет падать производительность ?

    1. Евгений:

      Добрый день,
      к сожалению, обновленного тестового сайта и наглядных тестов нагрузочного посещения нет.

  • Леонид:

    При всём этом важно еще тестировать работу административных интерфейсов
    Потому что если на сайте мы можем закэшировать все страницы и т.д. , то вот при редактировании товаров через админку — может случится сюрприз в виде 5-10 секундной загрузки данных товара на странице его редактирования ( пишу по опыту — была подобная ситуация на базе в 22 тыс. товаров )

  • Александр Ревтов:

    Спасибо за статью. Интересно и информативно.
    Будем дружить.
    Как-раз озадачились возможностями WordPress относительно большого количества товаров. Занимаемся созданием сайтов на Вордпресс, но до этого строили системы на 2-10К товаров.
    Будем пробовать. Надеюсь ситуация будет аналогичной)
    REALsite Харьков

  • Борис:

    Низкий поклон за эту статью.

  • Дмитрий:

    Если у категории множество подкатегорий, то выборку по родительской категории можно заметно ускорить путем исключения из запроса дочерних рубрик.
    При этом, при размещении товара нужно отмечать не только дочернюю рубрику, но и родительскую.

    так примерно

    add_action(‘parse_tax_query’, function($query) {

    if( !is_admin() && $query->is_main_query() ){
    $query->tax_query->queries[0][‘include_children’] = 0;
    }

    });

  • Серега:

    Мужики , спасибо огромное за статью ! Очень полезная инфа !

  • Игорь К:

    Большое спасибо за тестирование! Интересные выводы, значит woocommerce неплохо справляется даже с базой товаров в 100к+

    1. Zurab Shivarbidze:

      Тут вопрос как писали выше от хостинга
      + картинка товара просто заливка цветом … — а я знаю не по наслышке что многие и не делают оптимизацию — сразу срокость начнет просаживатся
      тема StoreFront если не ошибаюсь — она выглядит не очень … начинаете вешать дизайн — ждите нагрузки и показатели становятся выше — есть и темы которые оптимизированные но — они узкие в отношении правок —

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Более 3000 запущенных проектов

Вместе с нами многие уже развивают свой бизнес! Смотреть все отзывы
Хочу выразить большую благодарность коллективу компании "ImageCMS" а именно Ивану и Марии! Во время выбора компании проводил переговоры с 7 различными организациями, Иван единственный кто смог адекватно объяснить и подсказать всю необходимую информацию для принятия решения. В итоге результат более чем на 100% соответствует ожиданиям, а во много их даже превосходит!
Перепробовав много CMS (opencart, Битрикс) и др. Мы увидим, как много в каждой из них недостатков. Где-то или очень сложно или очень дорого кастомизировать. Работая маркетологом, могу заверить, что в ImageCMS большинство нужны "фич" реализовано из коробки, без дополнительных надстроек. Посмотрев демо версию новой версии движка, был приятно удивлен скоростью работы (ооочень важно).
За время сотрудничества компания показала себя в качестве ответственного подрядчика, быстро воплотив в жизнь удобный интернет-магазин с учетом всех наших пожеланий.
Работой доволен. Отвечают всегда быстро и по сути, остаются только приятные впечатления от общения. Пара слов о новом движке: Быстро, красиво и интуитивно понятно. Полностью оправдывает вложенные средства. Рекомендую.
Доволен. Скрипт считаю перспективным. Считаю, что ваш коллектив работает на опережение: ваше предложение было оптимальным по цене/качеству.
Опертивная и четкая работа, своевременое предоставление дополнительных консультаций по работе с административной частью. Созданным магазином довольна. Рекомендую этот движок!