Налаштування масштабування 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування масштабування 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування масштабування 1С-Бітрікс

Налаштування масштабування 1С-Бітрікс

«Нам потрібне масштабування» — запит, що найчастіше означає одне з трьох: сайт гальмує при пікових навантаженнях, планується кратне зростання трафіку, або потрібна відмовостійкість. Це різні завдання з різними рішеннями. Горизонтальне масштабування 1С-Бітрікс — не встановлення ще одного сервера, а перебудова архітектури з розподілом відповідальності компонентів.

Декомпозиція: що масштабується окремо

Компонент Спосіб масштабування Складність
PHP-застосунок Горизонтально (кілька нод) Середня
MySQL Вертикально + read replicas Середня
Elasticsearch Горизонтально (шарди/ноди) Висока
Memcached/Redis Горизонтально (пул) Низька
Файлове сховище NFS / S3-сумісне Середня
Статика (CDN) CDN offload Низька

Починаємо з компонента, який є вузьким місцем — а не з того, що «здається правильним». Часто виявляється, що MySQL справляється, а гальмо в PHP-коді.

Вертикальне vs горизонтальне

Вертикальне (більше CPU/RAM) — швидко, не потребує змін у коді, але має стелю і вартість. До 32 ГБ RAM на DB-сервері вертикальне масштабування часто вигідніше горизонтального.

Горизонтальне — складніше (потрібна stateless архітектура, shared storage, координація кешу), але немає обмеження зверху і забезпечує відмовостійкість.

Підготовка коду до горизонтального масштабування

Основні проблеми, які потрібно усунути до додавання нод:

Файловий кеш 1С-Бітрікс. За замовчуванням кеш зберігається в /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 (дивіться статтю з налаштування кластера).

Масштабування через CDN

Найшвидший спосіб зняти навантаження з застосунку — винести статику та зображення на CDN. Для 1С-Бітрікс налаштовуємо через модуль 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 віддає їх з найближчого вузла до користувача.

Масштабування імпорту з 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

Вимоги: образ сервера з передвстановленим 1С-Бітрікс, конфіг підтягується зі сховища при старті інстанса, Application Load Balancer автоматично реєструє нові ноди.

Бюджет масштабування

Реалістичні цифри для планування:

  • 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-інфраструктуру)