«1С-Битрикс: Энтерпрайз 17» выдержит нагрузку интернет-магазинов с миллионами товаров

27 сентября 2017 г.

Мы протестировали новые возможности «1С-Битрикс: Энтерпрайз» для производительности и отказоустойчивости. Последняя версия справится по меньшей мере с 1,8 млн товаров, 100 регионами присутствия и постоянным обновлением цен. Такой результат показало нагрузочное тестирование «1С-Битрикс», «Ленвендо» и «Селектел».
Мы уже тестировали «1С-Битрикс: Управление сайтом» в 2007, 2010 и 2015.


Условия тестирования

Новое тестирование мы приблизили к условиям крупного интернет-магазина:
  • с большим каталогом и сложным классификатором;
  • множеством регионов присутствия, разными ценами, остатками и акциями;
  • непрерывным обновлением базы товаров из ERP-систем;
  • сложным поведением покупателей.
Чтобы результат был сопоставим с предыдущими тестами и другими проектами, взяли типовое коробочное решение «Интернет-магазин».

Серверная архитектура

Мы использовали серверную операционную систему Linux CentOS 7.1 с «1С-Битрикс: Виртуальная машина 7.1». Этот виртуальный сервер оптимизирован для работы с PHP-приложениями.
Основные серверы выбрали из стандартного списка IaaS-провайдера «Селектел». Выбрали чуть выше среднего, чтобы показать результат на доступном оборудовании.


Сервер веб-кластера (4шт):
Процессор
Оперативная память
Жесткий диск
Стоимость
2 х Intel Xeon E5-2630v4 2.2 ГГц
64 ГБ DDR4
2 х 480 ГБ SSD, 2 x 4 ТБ SATA
18000 руб. в месяц
Сервер для генерации нагрузки (1 шт):
Процессор
Оперативная память
Жесткий диск
Стоимость аренды
Intel Xeon E3-1230 3.4 ГГц
32 ГБ DDR4
2 x 240 ГБ SSD
6500 руб. в месяц

Для обработки нагрузки построили веб-кластер из четырёх серверов. Это базовая и недорогая конфигурация, которая подходит и по производительности и по отказоустойчивости.

Каждая нода веб-кластера включает сервер БД, сервер приложений и сервер кэширования. Схема с одним мастером и тремя слейвами СУБД

Нагрузку на базу данных MySQL и серверы Memcached распределили с помощью стандартного модуля «Веб-кластер», а для балансировки между серверами использовали Nginx.

Для поиска по сайту развернули сервер Sphinx.


Исходные данные

Данные позаимствовали из демокаталога компании Best Buy. Он включает 1,8 млн товаров и 10 тысяч категорий.

Чтобы эмулировать мультирегиональный интернет-магазин, добавили 100 виртуальных регионов со своими ценами и остатками товаров. Дополнительно сгенерировали базу тестовых заказов.

Регионов 100 (уникальные цены и остатки товаров)
Товаров и торговых предложений 3 429 102
Цен (b_catalog_product_price) 173 293 881
Число заказов на момент запуска теста 198 595
Размер базы данных MySQL 35 GB
Размер папки upload 59 GB

С методологией тестирования нам помогли партнёры из компании «Ленвендо». Их специализация — техническая поддержка высоконагруженных проектов.

Они проанализировали профили нагрузки крупных интернет-магазинов, в том числе нашего клиента «Евросеть», и мы разработали реальный сценарий поведения покупателей:

  • 100 % — выбор региона, где 70 % — Москва, 30 % — случайный регион;
  • 37,8 % — просмотр двух случайных карточек товара;
  • 22,6 % — просмотр четырёх случайных карточек товара;
  • 18,5 % — просмотр четырёх случайных разделов с постраничной навигацией;
  • 10 % — просмотр двух случайных разделов с переходом к карточке товара;
  • 5,6 % — два обращения к главной странице;
  • 5 % — переход в случайный раздел и фильтрация товаров;
  • 0,5 % — добавление в корзину и оформление заказа.
Для ещё большей реалистичности каждые полчаса обновляли 1 млн цен и остатков и сбрасывали кэш каталога. За сутки обновили цены 30% товаров.

Обновление цен приводило к трафику 25 Мбит/с, благодаря чему мы воссоздали периодическое устаревание кэша и нагрузку из-за синхронизации с внешними системами.

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


За сутки тестовый интернет-магазин обработал:

61 609 663 обращений,

9 400 608 уникальных пользователей,

46 471 заказов.

«1С-Битрикс: Энтерпрайз 17» справлялся с 718 обращениями в секунду, и в 98% случаев на генерацию страниц уходило не более 0,4 секунды.

В сравнении с 2015 годом обработали на 30% больше обращений.

Вот как выглядел трафик:


Трафик ровный, на уровне 400 Мбит/с, с периодическими пиками из-за обновления цен и синхронизации обновлений между серверами

Так на обновление цен реагировал веб-кластер:

При обновлении цен ненадолго снижался RPS, но генерация страниц не занимала больше 0,9 секунды

Для технических специалистов мы собрали архив со всеми материалами по тестированию. Чтобы его получить, напишите нам по почте: enterprise@1c-bitrix.ru

Для остальных пользователей записали наглядное видео о работе веб-кластера под нагрузкой. Сняли обращение к главной странице, переходы по разделам и поиск товаров.


Выводы

Результат тестирования показал:
  • «1С-Битрикс: Энтерпрайз 17» справится с большими каталогами, постоянным обновлением товаров и быстрым поиском и фильтрацией.
  • Поможет без модификации кода нарастить серверные мощности в пиковые периоды и достичь высокой производительности и отказоустойчивости.
  • Технология «Композитный сайт» повысит конверсию благодаря мгновенному отклику страницы для покупателей.


Отзывы участников: