БонусБесплатный первый месяц абонентской поддержки при заказе разработки «под ключ»

Сколько товаров выдержит магазин и когда нужен highload

Нагрузка на каталог 1С-Битрикс: инфоблоки, highload-блоки, композит и веб-кластер на большом каталоге

«Сколько товаров выдержит наш магазин?» — вопрос, который задают перед ростом каталога или загрузкой новой номенклатуры. И почти всегда он поставлен неправильно. Платформа 1С-Битрикс спокойно работает и на десятках тысяч, и на миллионах позиций — но одна и та же цифра «100 000 товаров» на одном проекте летает, а на другом кладёт сервер.

В этой статье разберёмся, что на самом деле нагружает магазин, где предел обычных инфоблоков и когда пора переходить на highload-блоки, веб-кластер и композит. Без магических чисел — с понятной логикой, по которой принимают решение о масштабировании. Если каталог уже тормозит, точку приложения усилий покажет аудит нагрузки и Highload для 1С-Битрикс.

Коротко

  • «Потолка по числу товаров» нет — ограничивает нагрузка: характеристики, варианты, посетители, выборки.
  • Инфоблоки версии 2.0 и кэш отодвигают предел; highload-блоки нужны для больших справочников и фильтра.
  • Каталог лечится структурой и индексами, трафик — композитом, кэшем и веб-кластером; это разные задачи.
  • Highload внедряют после диагностики, а не «на всякий случай» — иначе усложняют проект, не решив проблему.

Правильный вопрос — не «сколько товаров»

Число карточек в каталоге само по себе почти ничего не говорит о нагрузке. Магазин на 50 000 простых товаров без вариантов и с десятком характеристик может работать быстрее, чем каталог на 15 000 товаров, где у каждого — сотня свойств, множество торговых предложений и активный умный фильтр по всем характеристикам сразу.

Поэтому правильный вопрос звучит иначе: «Какую нагрузку создаёт наш каталог и трафик?». Ответ складывается из нескольких факторов — глубины характеристик, числа торговых предложений, сложности фильтра, количества одновременных посетителей и качества выборок. Именно эти факторы, а не абстрактное число товаров, определяют, когда потребуется highload и масштабирование.

Что реально нагружает магазин

Нагрузка магазина складывается из нескольких независимых источников, и лечатся они по-разному:

Ключевой вывод: каталог и трафик бьют по разным местам. Большой каталог грузит базу и выборки, пиковый трафик — генерацию страниц. Диагностировать их надо раздельно, иначе легко «лечить не то».

Слои кэширования ускоряют ответ БраузерзапросCDN / кэшготовый ответКомпозиткэш страницБазатолько при промахеБольшинство запросов отдаётся из кэша, до базы доходят единицы
Схема: между браузером и базой стоят слои кэша (CDN, композит). Большинство запросов отдаётся мгновенно из кэша, а до базы доходят единицы — сайт держит нагрузку.

Инфоблоки: где предел и как его отодвинуть

Каталог в 1С-Битрикс хранится в инфоблоках. У них есть две версии хранилища свойств, и это первое, на что смотрят при росте каталога. В версии 1.0 значения свойств лежат в общей таблице, что удобно для маленьких каталогов, но плохо масштабируется. В версии 2.0 под каждый инфоблок создаётся своя таблица свойств — выборки и фильтрация работают быстрее на больших объёмах.

Перевод крупного каталога на инфоблоки 2.0 — типовой и часто первый шаг оптимизации: он отодвигает предел без сложной кастомизации. Как устроены версии хранилища, типы свойств и их влияние на скорость, подробно разобрано в статье про инфоблоки версий 1.0 и 2.0. Но и версия 2.0 — не бесконечная: когда справочники характеристик становятся огромными и активно участвуют в фильтрации, приходит очередь highload-блоков.

Highload-блоки: что это и когда нужны

Highload-блок — это отдельная таблица в базе под быстрый доступ к большим объёмам однотипных данных: справочникам характеристик, ценам, остаткам, привязкам. В отличие от свойств инфоблока, highload-блок имеет собственную структуру и индексы, спроектированные под конкретную задачу, поэтому выборки по нему быстрее.

Highload-блоки нужны, когда справочники большие (тысячи значений) и активно используются — например, характеристики, по которым идёт фильтрация огромного каталога. Тогда вынос этих данных в highload ускоряет и выборки, и умный фильтр. Полный разбор механизма — в статье про highload-блоки в 1С-Битрикс.

Не серебряная пуля. Highload-блоки ускоряют работу с большими справочниками, но не заменяют кэш, композит и оптимизацию запросов. Часто реальное узкое место — неоптимальный код шаблона или отсутствие кэширования, а не структура хранения. Поэтому highload внедряют после диагностики.

Умный фильтр на большом каталоге

Умный фильтр (компонент catalog.smart.filter) — самая тяжёлая часть каталога с точки зрения нагрузки. Он строит выборки по множеству свойств сразу и пересчитывает доступные значения фасетов. На большом каталоге с глубокими характеристиками фильтр первым начинает тормозить.

Ускоряют фильтр несколькими способами: включают фасетный индекс, чтобы доступные значения считались заранее, а не на лету; выносят тяжёлые справочники характеристик в highload-блоки; кэшируют результаты частых комбинаций фильтра. Комбинация этих мер держит фильтр быстрым даже на большом ассортименте. Если каталог особенно тяжёлый, оптимизацию делают целенаправленно — это услуга по оптимизации highload-блоков на 1С-Битрикс.

Импорт и обмен: узкое место

Большие каталоги часто спотыкаются не на показе, а на обновлении. Загрузка сотен тысяч позиций «одним куском» в разгар дня способна положить сайт, а полный обмен с 1С при каждом запуске — перегрузить базу.

Для по-настоящему больших объёмов применяют специализированный импорт — это отдельная услуга высокопроизводительного импорта 100K–1M товаров на highload-блоках. Обмен с внешними системами по API мы разбираем в статье про безопасность REST и вебхуков.

Композит и кэширование

Пиковый трафик — это отдельная от размера каталога задача, и решает её в первую очередь кэширование. Композитный сайт отдаёт статическую часть страниц мгновенно из кэша, а динамику (цена клиента, наличие, корзина) догружает отдельным запросом. Это резко снижает нагрузку на генерацию страниц.

К композиту добавляют кэширование компонентов и выборок: списки товаров, меню, фильтр кэшируются и не пересчитываются на каждый заход. Правильно настроенный кэш часто даёт больший прирост, чем апгрейд железа. Про устройство композита и уровни кэша полезно почитать вместе с материалом про хостинг и инфраструктуру для 1С-Битрикс.

Веб-кластер и масштабирование

Когда один сервер перестаёт справляться с трафиком, магазин масштабируют горизонтально — веб-кластером. 1С-Битрикс поддерживает распределение нагрузки: несколько веб-серверов за балансировщиком, репликация базы, общий кэш и сессии. Это позволяет расти по трафику, добавляя серверы, а не только наращивая один.

Веб-кластер — тяжёлая артиллерия: он оправдан на высоконагруженных проектах с большим и пиковым трафиком, а не как первый шаг. Часто до кластера проблему решают композит, кэш и оптимизация. Полноценные highload-проекты с кластером и масштабированием мы ведём как отдельное направление — highload-проект на Битрикс и сложные и highload-проекты.

Индексы и запросы к базе

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

Диагностика начинается с монитора производительности и анализа медленных запросов: видно, какие выборки съедают время. Дальше — добавляют индексы, переписывают тяжёлые места на современный доступ к данным и убирают запросы в циклах. Как работать с данными эффективно, разобрано в статье про D7 и ORM в 1С-Битрикс. Часто именно оптимизация запросов, а не highload, даёт первый и самый дешёвый прирост.

Ориентиры по размеру каталога

Цифры ниже — не жёсткие пороги, а грубые ориентиры: реальная граница зависит от глубины характеристик, числа предложений, фильтра и трафика. Но они помогают понять, на каком уровне какие меры обычно нужны.

Масштаб каталогаЧто обычно достаточноНа что смотреть
До ~10 тыс. товаровИнфоблоки, базовый кэшКачество запросов и шаблона
~10–100 тыс.Инфоблоки 2.0, композит, фасетный индексУмный фильтр, характеристики
~100 тыс.–500 тыс.+ Highload-блоки под справочники, оптимизация фильтраФильтр, импорт, база
Более ~500 тыс.+ Веб-кластер, специализированный импортМасштабирование, инкрементальный обмен

Ещё раз: это ориентиры. Тяжёлый каталог на 30 000 позиций с сотнями свойств может требовать highload раньше, чем «плоские» 200 000 товаров. Решение принимают по диагностике, а не по таблице.

Признаки, что пора на highload

Если это про вас — highload-блоки, скорее всего, оправданы. Если нет, а тормоза есть, сначала проверьте более простые причины: запросы, кэш, версию хранилища инфоблоков и сервер.

Частые ошибки

Чек-лист масштабирования

  1. Проведите диагностику. Монитор производительности и анализ медленных запросов покажут реальное узкое место.
  2. Проверьте версию инфоблоков. Большой каталог — на хранилище свойств 2.0.
  3. Оптимизируйте запросы. Индексы, современный доступ к данным, никаких запросов в цикле.
  4. Включите кэш и композит. Кэширование компонентов и композитный сайт под трафик.
  5. Настройте фильтр. Фасетный индекс, тяжёлые справочники — кандидаты на highload.
  6. Внедрите highload при необходимости. Большие справочники характеристик — в highload-блоки.
  7. Наведите порядок в обмене. Инкрементальный обмен, порционный импорт, фоновое время.
  8. Масштабируйте железо/кластер. Веб-кластер — как следующий шаг для высокого и пикового трафика.

Вывод

Магазин на 1С-Битрикс не имеет фиксированного «потолка по числу товаров» — он ограничен нагрузкой, а не количеством карточек. Поэтому вопрос «сколько выдержит» превращается в «что именно нагружает каталог и трафик» и решается по диагностике, а не по слухам про магические цифры.

Порядок разумен один: сначала простые и дешёвые меры — версия инфоблоков, оптимизация запросов, кэш и композит; затем highload-блоки для больших справочников и фильтра; и только для высоконагруженных проектов — веб-кластер и специализированный импорт. Двигаясь по этой лестнице от дешёвого к сложному, вы масштабируете магазин осознанно, не переплачивая за то, что вам пока не нужно.

Частые вопросы

Сколько товаров вообще выдерживает 1С-Битрикс?

Точного «потолка по числу товаров» нет — платформа работает и на десятках тысяч, и на миллионах позиций. Ограничивает не количество карточек само по себе, а нагрузка: сколько характеристик, торговых предложений, одновременных посетителей и как построены выборки и фильтр. Каталог на 50 000 «плоских» товаров может летать, а на 20 000 товаров с десятками свойств и вариантов — тормозить. Поэтому вопрос ставят не «сколько товаров», а «какая нагрузка».

Что такое highload-блок простыми словами?

Highload-блок — это отдельная таблица в базе, спроектированная под быстрый доступ к большим объёмам однотипных данных: справочникам характеристик, ценам, остаткам, привязкам. В отличие от свойств инфоблока, где значения хранятся в общих таблицах, highload-блок даёт собственную структуру и индексы. Это ускоряет выборки и фильтрацию на больших каталогах. Подробный разбор — в отдельной статье про highload-блоки.

Когда точно пора переходить на highload-блоки?

Явные признаки: умный фильтр по многим характеристикам заметно тормозит, каталог с большим числом свойств и торговых предложений медленно строит списки, а оптимизация кэша и хостинга уже не помогает. Если справочники характеристик огромные (тысячи значений) и активно участвуют в фильтрации — это прямой кандидат на highload-блоки. Но сначала стоит исключить более простые причины: неоптимальные запросы, отсутствие кэша, слабый сервер.

Highload-блоки решают все проблемы производительности?

Нет. Highload-блоки ускоряют работу с большими справочниками и характеристиками, но не заменяют кэширование, композит, оптимизацию запросов и адекватный хостинг. Часто узкое место вообще не в структуре хранения, а в неоптимальном коде шаблона, отсутствии кэша или слабом сервере. Поэтому highload внедряют после диагностики, а не «на всякий случай» — иначе можно усложнить проект, не решив реальную проблему.

Что важнее для скорости — число товаров или число посетителей?

Это два разных вида нагрузки. Большой каталог нагружает выборки и фильтр (нагрузка на базу), а много одновременных посетителей — на генерацию страниц и сервер целиком. Часто они бьют по разным местам: каталог лечится структурой хранения и индексами, а пиковый трафик — композитом, кэшем и веб-кластером. На реальном проекте обычно нужно и то, и другое, но диагностировать их надо раздельно.

Поможет ли просто более мощный сервер?

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

Как быстро импортировать сотни тысяч товаров без остановки сайта?

Большой импорт делают порционно и в фоне, а не «одним куском» в разгар дня. Данные загружают пакетами через агенты или очереди, тяжёлые справочники кладут в highload-блоки, а обмен с 1С настраивают инкрементальным — передаются только изменения, а не весь каталог каждый раз. Для по-настоящему больших объёмов (сотни тысяч и миллионы позиций) применяют специализированный высокопроизводительный импорт.

Композит помогает при большом каталоге?

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

Поделиться:

Каталог растёт и начинает тормозить?

Проведём аудит нагрузки, найдём реальное узкое место и предложим план — от кэша и запросов до highload-блоков и веб-кластера.

Highload-проект на Битрикс

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем и масштабируем магазины на 1С-Битрикс: highload-блоки, оптимизация фильтра, композит, веб-кластер и высокопроизводительный импорт больших каталогов.

← Все статьи блога