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

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

Задача

Заранее предсказать, какую нагрузку сможет выдержать произвольный проект на Неткэте, невозможно, потому что это зависит от самых разных факторов, например:

  • функционал и качество внедрения (конкретного сайта, разработанного на базе Неткэта)
  • параметры и архитектура серверной площадки
  • загруженность каналов
 

Поэтому мы тестировали готовый сайт (Универсальный интернет-магазин из каталога готовых сайтов), работающий на одной из старших (то есть самых «тяжелых») редакций  – Netcat E-commerce). Мы хотели знать, какую нагрузку – посетителей, просмотров страниц, заказов - выдержит такой сайт, расположенный на:

  • одном сервере средней мощности
  • таком же сервере, но с включенным кешированием
  • кластере из трех таких же серверов с включенным кешированием
 

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

.

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

Для тестирования были использованы сервера следующей конфигурации: Xeon E3-1275 V5 4 ядра 4000 MHz, 2 * SSD SATA2.5" 480GB SAMSUNG SM863, 2 * DDR4 16GB Kingston

Хостинг-площадка: Beget

Серверное ПО

  • Операционная система: centos 7.3
  • Ядро: Linux 3.10.0-514.6.1.el7.x86_64
  • nginx 1.10.2
  • php-fpm 7.1.1
  • модули PHP bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcre, PDO, pdo_dblib, pdo_mysql, pdo_sqlite, Phar, Reflection, session, SimpleXML, sockets, SPL, sqlite3, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib
  • mariadb 5.5.52
  • Файловая система: ext4, дефолтные опции монтирования, использован lvm, mdraid RAID1
 

Для второго и третьего эксперимента включалось кеширование средствами nginx со сроком жизни кэша 10 минут. В третьем эксперименте на первом сервере располагался балансировщик и php-fpm, на втором php-fpm, на третьем MySQL и php-fpm.

Конфигурация Netcat

Готовый сайт: Универсальный интернет-магазин

Редакция: Netcat E-commerce

Модули: Ядро, Поиск по сайту, Конструктор лендингов, Личный кабинет, Подписки и рассылки, Логирование, Комментарии, Витрина товаров, Базовый интернет-магазин, Счета и Акты, Гибридный интернет-магазин, Приём платежей, Конструктор скидок и купонов, Конструктор доставок, Интеграция с 1С и торговыми системами, Статистика посещений, Файл-менеджер, Кэширование, Календарь, Маршрутизация, Облако тегов, Управление рекламой на сайте

Количество товаров: 106619 SKU

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

Кроме того, в процессе тестирования была разработана и внедрена технология асинхронных врезок, которая позволяет кешировать только неизменяемые части страниц, а зависимые от пользователя (сниппет корзины, «вы недавно смотрели», сниппет авторизации) генерировать на лету с минимальной нагрузкой на сервер. Эта технология доступна в версии Неткэта 5.8, который выйдет в начале апреля 2017 года.

.

Методика тестирования

«В декабре 2016 года Дмитрий Васильев, генеральный директор Netcat, поставил перед нами задачу: провести нагрузочное тестирование платформы в различных режимах и на различном сервером оборудовании. При этом, с одной стороны, предполагалась максимальная нагрузка на используемые ресурсы веб-сайта - как в плане количества товарных позиций, SKU, так и в плане запросов от «реальных» пользователей. С другой стороны, серверное оборудование специально выбиралось из среднего ценового диапазона: такое может себе позволить почти любой владелец интернет-магазина в России. Нам важно было создать максимально реальные условия использования платформы Netcat под большой нагрузкой.

В первой, предварительной, серии тестов платформы мы использовали ПО Яндекс.Танк и генераторы нагрузки Phantom и JMeter. К сожалению, первый работал нестабильно в нашем серверном окружении, а второй требовал значительных ресурсов (для создания реалистичной нагрузки 1 сервера нам потребовалось 10 с JMeter). В результате, в финальном тестировании в феврале 2017 года мы использовали модифицированное ПО http_load, которое позволяло отправить огромное (несколько десятков тысяч) произвольных HTTP-запросов с 1 сервера, не нагружая при этом сам тестирующий сервер (тестируемое окружение отказывало раньше, чем тестирующее).

На стадии подготовки было собрано 2000 различных сессий реальных пользователей, для каждой был подготовлен отдельный бинарный файл http_load, который далее был запущен по своему сценарию. Отдельными сценариями выполнялись запросы на создание заказов на сайте. У динамической системы, платформы Netcat, было два предела прочности: на обработку простых (просмотров страниц) и сложных запросов (создание заказов). В ходе тестирования важно было соотнести оба предела в рамках характерных показателей посещаемости сайта (глубина просмотра и конверсия сайта). Ибо большое количество заказов без просмотров страниц, равно как и большое количество просмотров страниц без заказов являются чисто синтетическими, нереальными случаями.

Балансировка была достигнута при примерно 1 заказе на 1000 просмотров страниц (это соответствует конверсии 1% при глубине просмотра 10 страниц), и является хорошими показателями для любого магазина. Дополнительно в ходе тестирования имело смысл сбалансировать максимальное время ожидания ответа сервера по количеству запросов/заказов (чтобы получить параметры работы, максимально комфортные для посетителя), для тестирования сервера без кэширования это не было выполнено.»

Николай Мациевский, Генеральный директор Айри

.

Результаты тестирования на часовом отрезке

Чтобы получить количественные показатели в суточный период при равномерном распределении нагрузки, их надо умножить на 24. Но т.к. органическое распределение никогда не бывает равномерным, принято делить «равномерные» показатели на три.

Итоговые результаты

Поделиться

Комментарии 0

Описание проекта