Нагрузочное тестирование ImageCMS Shop

Забежим наперед и поделимся с вами, что на следующей неделе выходит новый релиз ImageCMS 4.12. Одна из его главных фишек — колоссальная оптимизация быстродействия системы. В процессе работы над оптимизацией мы проводили множество тестов до тех пор, пока не получили оптимальный для современного интернет-магазина результат. О ходе и итогах тестирования рассказываем дальше.
В предыдущей статье мы описывали влияние скорости загрузки сайта на конверсию пользователей, продвижение в поисковых системах и способы достижения оптимальных результатов. В той статье моделировалась небольшая нагрузка — с одним пользователем на один момент времени, что характерно для сайтов с небольшой посещаемостью — до 3000 пользователей в день (причем вне зависимости от установленной версии PHP на хостинге.
Но если вы сможете оптимизировать сайт для одного пользователя или сервиса, это не значит, что результаты будут такими же в условиях большой посещаемости. Это очень важно учитывать, если вы планируете масштабирование вашего интернет-магазина. Ведь при неправильном выборе программного обеспечения или проектировании, может случиться так, что при немного большей посещаемости придется очень многое переделывать, даже начинать сначала.
Итак, давайте выясним как определить, какую нагрузку может выдержать ваш интернет-магазин. А также расскажем, как мы проводили тестирование для ImageCMS Shop.
Для тестирования мы использовали Apache JMeter — инструмент для проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation. Данное решение позволяет смоделировать реальное поведение пользователей и задать необходимые параметры, чтобы получить наиболее точный результат.
Мы задали максимально приближенный к реальному сценарий. Каждый пользователь, который переходит на сайт, во время моделирования будет выполнять следующие условия:
- переход на страницу каталога
- переход на вторую страницу
- переход на карточку товара
Далее мы только меняли количество одновременных пользователей в процессе различных тестов, чтобы определить, какую нагрузку держит платформа. Тест проводили со следующими нагрузками:
- 50 пользователей в минуту (это нагрузка, которая соответствует посещаемости примерно 20000 пользователей в день)
- 100 пользователей в минуту (это нагрузка, которая соответствует посещаемости примерно 40000 пользователей в день)
- 300 пользователей в минуту (это нагрузка, которая соответствует посещаемости примерно 120000 пользователей в день)
Также мы тестировали нагрузку на магазин с различным количеством товаров, для теста было выбрано три базы: на 1000, 10000, 100000 товаров. Базы были наполнены рандомно сгенерированными товарами.
Для каждого хостингового плана мы проводили тест на двух версиях PHP — 5.6, 7. Дело в том, что не все хостинги поддерживают PHP 7 и необходимый для нашей платформы модуль ionCube.
Хостинговые планы брали на основании ImageCMS Host. Основные различия в тарифных планах определены ресурсом, cpu, ограничением на время выполнения php-скриптов, а так же лимитом оперативной памяти на процесс. А именно:
- Тариф Mini предусматривает возможность использовать 1 ядро процессора, 512mb оперативной памяти на процесс, время работы на php-скрипт (процессорное время) до 500 сек.
- Тариф Start — до 2-х ядер процессора, 1Gb (1024mb) на php-скрипт и до 1000 сек на работу скрипта.
- Тариф Standart — до 3-х ядер процессора, 1.5Gb (1536mb) на php скрипт, до 1500 сек на работу скрипта.
Итак, начнем.
Пример теста
Проводим тест на тарифе Mini для базы в 1000 товаров и нагрузке в 50 пользователей в минуту с установленным PHP 7.
доступность: 100%
средняя скорость: 786 мс.
Немного объясним, как интерпретировать данные, полученные в результате тестирования:
- Label — Ярлык образца. Если выбрано «Включить название группы в ярлык?», то название группы треда добавляется в качестве префикса. Таким образом при необходимости можно располагать одинаковые ярлыки из разных групп тредов по отдельности.
- # Samples — Количество образцов с одинаковым ярлыком.
- Average — Среднее время, затраченное на определённое количество результатов.
- Min — Минимальное время, затраченное на образцы с одинаковым ярлыком.
- Max — Максимальное время, затраченное на образцы с одинаковым ярлыком.
- Std. Dev. — Стандартное отклонение времени, затраченного на образцы.
- Error % — Процент запросов с ошибкой.
- Throughput — Время отработки изменяется в запросах за секунду/минуту/час. Единица времени выбирается так, чтобы показатель составлял не меньше 1,0. Когда время отработки сохраняется в файл CSV, оно выражается в запросах за секунду, т.е. 30 запросов за минуту сохраняется как 0,5.
- Kb/sec — Время отработки, измеренное в килобайтах за секунду.
- Avg. Bytes — средний размер ответа на образец запроса в байтах.
Далее все тесты будут проводиться по аналогу. В случае возникновения вопросов можете уточнить у наших консультантов либо в комментариях.
Приведем все данные в виде таблицы.
Hosting Mini (php 5.6) | 50 пользователей | 100 пользователей | ||
---|---|---|---|---|
1000 товаров | Среднее время загрузки (мс) | 1317 | 1399 | |
Доступность | 100 | 100 | ||
10000 товаров | Среднее время загрузки (мс) | 1317 | 1261 | |
Доступность | 100 | 100 | ||
Hosting Mini (php 7) | 50 пользователей | 100 пользователей | ||
1000 товаров | Среднее время загрузки (мс) | 875 | 829 | |
Доступность | 100 | 100 | ||
10000 товаров | Среднее время загрузки (мс) | 786 | 795 | |
Доступность | 100 | 100 | ||
Hosting Start (php 5.6) | 50 пользователей | 100 пользователей | 300 пользователей | |
1000 товаров | Среднее время загрузки (мс) | 1419 | 1825 | 2266 |
Доступность | 100% | 100% | 100% | |
10000 товаров | Среднее время загрузки (мс) | 1334 | 1967 | 2290 |
Доступность | 100% | 100% | 100% | |
100000 товаров | Среднее время загрузки (мс) | 1475 | 1551 | 2170 |
Доступность | 100% | 100% | 100% | |
Hosting Start (php 7) | 50 пользователей | 100 пользователей | 300 пользователей | |
1000 товаров | Среднее время загрузки (мс) | 740 | 852 | 894 |
Доступность | 100% | 100% | 100% | |
10000 товаров | Среднее время загрузки (мс) | 832 | 890 | 982 |
Доступность | 100% | 100% | 100% | |
100000 товаров | Среднее время загрузки (мс) | 982 | 1007 | 951 |
Доступность | 100% | 100% | 100% | |
Hosting Standart (php 5.6) | 50 пользователей | 100 пользователей | 300 пользователей | |
1000 товаров | Среднее время загрузки (мс) | 690 | 721 | 750 |
Доступность | 100% | 100% | 100% | |
10000 товаров | Среднее время загрузки (мс) | |||
Доступность | 100% | 100% | 100% | |
100000 товаров | Среднее время загрузки (мс) | 768мс | 930мс | 948 |
Доступность | 100% | 100% | 100% | |
Hosting Standart (php 7) | 50 пользователей | 100 пользователей | 300 пользователей | |
1000 товаров | Среднее время загрузки (мс) | 800 | 796 | 850 |
Доступность | 100% | 100% | 100% | |
10000 товаров | Среднее время загрузки (мс) | 760 | 730 | 744 |
Доступность | 100% | 100% | 100% | |
100000 товаров | Среднее время загрузки (мс) | 880 | 838 | 750 |
Доступность | 100% | 100% | 100% |
Таким образом можно рассчитать потенциальную нагрузку на ваш интернет-магазин и стоимость обслуживания по мере масштабирования.
Основные выводы
- Во время тестирования мы определили, что хостинг с поддержкой php 7 и ionCube php 7 Loader примерно в два раза быстрее, чем без поддержки.
- Хостинг с конфигурацией Mini оптимально работает с нагрузкой до 100 одновременных пользователей с базой до 10000 товаров, показывая при этом приемлемый для зеленой отметки Google Page Speed Insights показатель загрузки html кода страницы в 700 мс.
- Хостинг с конфигурацией Start оптимально работает с нагрузкой до 300 одновременных пользователей с базой в 10000 товаров, показывая при этом приемлемый для зеленой отметки Google Page Speed Insights показатель загрузки html кода страницы в 800 мс.
- Хостинг с конфигурацией Standard оптимально работает с нагрузкой до 300 одновременных пользователей с базой в 100000 товаров, показывая при этом приемлемый для зеленой отметки Google Page Speed Insights показатель загрузки html кода страницы в 800 мс.
Если вы хотите провести какой-то дополнительный тест с другими параметрами, обращайтесь к нашим консультантам и мы с радостью вам поможем.

- Предыдущая « Как открыть интернет-магазин изделий ручной работы
- Следующая Релиз ImageCMS 4.12 »
Отличные результаты! Скажите пожалуйста, а большая разница с версией 4.11 ?
Да, как раз работали в 4.12 над этими всеми моментами, особенно — над системой кэширования.