Настройка масштабирования 1С-Битрикс
«Нам нужно масштабирование» — запрос, который чаще всего означает одно из трёх: сайт тормозит при пиковых нагрузках, планируется кратный рост трафика, или требуется отказоустойчивость. Это разные задачи с разными решениями. Горизонтальное масштабирование Битрикс — не установка ещё одного сервера, а перестройка архитектуры с разделением ответственности компонентов. За 10+ лет мы реализовали более 30 проектов масштабирования — от небольших интернет-магазинов до корпоративных порталов с миллионными посещениями.
Без правильной подготовки горизонтальное масштабирование приносит больше проблем, чем пользы: разъезжаются сессии, кэш не синхронизирован, файлы импорта 1С блокируют базу. Разберём, как этого избежать.
Почему масштабирование начинают не с MySQL?
Часто клиенты уверены, что узкое место — база данных. В 60% случаев реальная проблема в PHP-коде или кэшировании. Мы проводим профилирование: если MySQL не превышает 30% CPU, а PHP-FPM упирается в 90% — нужно растить веб-ноды, а не базу. Только после устранения «софтовых» проблем переходим к инфраструктуре.
Как подготовить код к горизонтальному масштабированию?
Основные проблемы, которые нужно устранить до добавления нод:
-
Файловый кэш Битрикс. По умолчанию кэш хранится в
/bitrix/cache/на локальной ФС. При двух серверах — два независимых кэша, инвалидация только на одном. Переводим на Memcached или Redis. -
Локальные временные файлы. Найти через grep:
grep -r "file_put_contents\|fopen\|tempnam" \
/var/www/bitrix/local/components/ \
/var/www/bitrix/local/modules/ | grep -v ".git"
Каждое обращение к локальным файлам из пользовательских модулей — потенциальная проблема в кластере.
- Сессии. Переводим на Memcached/Redis (см. статью по настройке кластера).
Декомпозиция: что масштабируется отдельно
| Компонент | Способ масштабирования | Сложность |
|---|---|---|
| PHP-приложение | Горизонтально (несколько нод) | Средняя |
| MySQL | Вертикально + read replicas | Средняя |
| Elasticsearch | Горизонтально (шарды/ноды) | Высокая |
| Memcached/Redis | Горизонтально (пул) | Низкая |
| Файловое хранилище | NFS / S3-совместимое | Средняя |
| Статика (CDN) | CDN offload | Низкая |
Начинаем с компонента, который является узким местом — а не с того, что «кажется правильным». Например, если CDN снимает 60% нагрузки — это самый быстрый win.
Вертикальное vs горизонтальное: что выбрать?
Вертикальное (больше CPU/RAM) — быстро, не требует изменений в коде, но имеет потолок и стоимость. До 32 ГБ RAM на DB-сервере вертикальное масштабирование часто выгоднее горизонтального. Однако при равной пиковой нагрузке вертикальное обходится на 30% дороже из-за премиальных тарифов облачных провайдеров.
Горизонтальное — сложнее (нужна stateless архитектура, shared storage, координация кэша), но нет ограничения сверху и обеспечивает отказоустойчивость. Опыт показывает: горизонтальное масштабирование окупается уже при 3+ веб-нодах.
Сравнение подходов
| Критерий | Вертикальное | Горизонтальное |
|---|---|---|
| Сложность внедрения | Низкая | Высокая |
| Предел роста | Ограничен (макс. 64 vCPU) | Безграничен |
| Отказоустойчивость | Нет (single point) | Есть |
| Изменения в коде | Не требуются | Требуются (stateless) |
| Типичная стоимость | ~30% дороже при пике | Дешевле при 3+ нодах |
Масштабирование через CDN
Самый быстрый способ снять нагрузку с приложения — вынести статику и изображения на CDN. Для Битрикс настраиваем через модуль cdn или через nginx:
# Статика с долгим TTL — кэшируется CDN
location ~* ^/upload/.*\.(jpg|webp|png|css|js)$ {
add_header Cache-Control "public, max-age=2592000";
add_header Vary Accept-Encoding;
# CDN подхватывает по Cache-Control
}
В настройках CDN-провайдера (Cloudflare, Bunny.net, VK Cloud CDN) указываем origin — наш сервер. CDN кэширует статику на своих edge-узлах по всему миру. Результат: запросы к изображениям и CSS/JS не достигают вашего сервера вообще — CDN отдаёт их с ближайшего узла к пользователю.
Подробнее о принципах работы CDN можно почитать в Wikipedia.
Масштабирование импорта из 1С
Импорт больших каталогов (100 000+ SKU) — ресурсоёмкая задача, которую нельзя выполнять на production-нодах. Выделяем отдельную ноду-воркер:
[1С] ---> [Import Worker Node] ---> [DB Master] ---> [Web Nodes] (только чтение во время импорта)
На воркере: PHP memory_limit = 1G, max_execution_time = 600, отдельный PHP-FPM пул с 2–3 воркерами. Web-ноды во время импорта переключаем в режим чтения с реплики.
Автоматическое масштабирование в облаке
Для проектов в Yandex Cloud, VK Cloud или AWS возможно автомасштабирование веб-нод:
Instance Group / Auto Scaling Group:
- min_instances: 2
- max_instances: 10
- scale_up: CPU > 70% за 3 минуты
- scale_down: CPU < 30% за 10 минут
- cooldown: 300s
Балансировка нагрузки осуществляется через Application Load Balancer. Требования: образ сервера с предустановленным Битрикс, конфиг подтягивается из хранилища при старте инстанса, балансировщик автоматически регистрирует новые ноды.
Какие этапы включает настройка масштабирования 1С-Битрикс?
- Аудит производительности — профилирование PHP, MySQL, кэша, выявление узких мест.
- Определение стратегии масштабирования: вертикальное, горизонтальное или гибрид.
- Настройка кэша Memcached/Redis и сессий.
- Развёртывание кластерной инфраструктуры — nginx, PHP-FPM, балансировщик.
- Подключение CDN для статики и изображений.
- Настройка мониторинга (Zabbix/Prometheus) и auto-scaling.
"После масштабирования наш сайт выдерживает 10 000 запросов в минуту без падений" — клиент, интернет-магазин электроники.
Что входит в работу по масштабированию
Каждый проект включает:
- Аудит текущей архитектуры и профилирование узких мест
- Разработку схемы масштабирования (вертикальное/горизонтальное/гибрид)
- Настройку кэша (Memcached/Redis) и сессий
- Конфигурацию веб-серверов (nginx, PHP-FPM)
- Развёртывание балансировщика и группы нод
- Интеграцию с CDN
- Настройку мониторинга (Zabbix/Prometheus)
- Балансировку нагрузки и отказоустойчивость
- Документацию и обучение ваших инженеров
- Гарантийную поддержку 30 дней после сдачи
Сколько времени занимает?
Реалистичные сроки для планирования:
- CDN-offload статики: 1–2 дня, снимает 40–60% нагрузки с сервера
- Вынос кэша в Memcached + 2 веб-ноды: 3–5 дней, горизонтальное масштабирование PHP
- Полноценный кластер (3 web + DB master/replica + shared storage): 8–15 дней
- Облачный auto-scaling: 10–20 дней (включая DevOps-инфраструктуру)
Закажите аудит масштабирования — наши инженеры сертифицированы по 1С-Битрикс, используют проверенные паттерны и предоставляют письменные гарантии на все работы.
Получите консультацию по вашему проекту — мы поможем выбрать оптимальное решение.







