Найти тему
Артур Зайнуллин

1С-Bitrix и 4,5млн товаров

За все свое время я делал разного рода сложности сайты на платформе Битрикс, но тут прилетела задача "Создать интернет магазин с 4,5 млн товарных позиций". Я подумал, еще раз подумал... Посмотрел что пишут люди о попытках загрузить в Битрикс свыше 1млн товаров. Все их попытки обвенчались провалом. И тут я натыкаюсь на статью 2013 года где пару разработчиков сделали новостной сайт со свыше 3млн новостных публикаций что-то вроде "онлайн газеты".

Та статья очень сильно меня подтолкнула.

Я принялся за работу, сделал верстку, натянул верстку на стандартные компоненты, проверил работу и вроде бы все было хорошо.

И так есть готовый шаблон, но нет товаров ну что - подумал я

буду писать скрипт который зальет все товары.

В этот же день я начал опробовать свой скрипт.

Запускаю и смотрю за какое время добавится первые 100 товаров.

На мое удивление среднее время добавления одного товара было 3 секунды

И тут я подался в расчеты 3*4,5млн=13500000 дальше я считать не стал т.к. понимал что это слишком долго.

Хорошо, докупили железа и теперь наш сервер имеет 32 гб оперативы + 2 SSD.

Далее переписываю скрипт используя ядро D7 и снова делаю. замер.

Теперь среднее время 0,5 сек. Я подумал это фиаско, но деваться некуда нужно очень быстро решить эту проблему чтобы загрузить товары хотя бы за 7 дней.

И так я начал убирать добавления свойств оставив только артикул и бренд и попробовал снова.

Ура!! Теперь я даже не стал считать т.к. 100 товаров добавились менее чем за 10 секунд.

Я запустил скрипт и пошел процесс загрузки...

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

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

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

Дальше я начал смотреть как ведет себя публичная версия.

К моему сожалению каждый раздел открывался за 5-6 минут без кэша.

Чтож делать? подумал я.

Благодаря панели битрикса я узнал где и какие запросы сильно нагружают сайт и тормозят открытие. Вся проблема была в объедении таблиц.

Переписал компонент catalog.section который как раз таки подготавливал этот очень долгий запрос в базу данных и после этого все страницы сайта начали открываться менее чем за 3 секунды с интернетом 1мбит/секунду. С высокоскоростным интернетом страницы открывались за 1 секунду.

Супер подумал я и включил супер-пупер умный фильтр битрикса.

Все, сайт снова стал медленным и тяжелым.

Ок, создаю фасетный индекс (он создавался 3 дня) и пробую снова.

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

Нет подумал я. Так дело не пойдет. Начал кастомизировать умный фильтр битрикса. После этого сайт снова стал быстро работать.

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