Навантажувальне тестування сайту 1С-Бітрікс
Уявіть: інтернет-магазин на Бітрікс запускає рекламну кампанію, і в першу годину приходить 5 000 відвідувачів. Сайт падає через 10 хвилин. Типова ситуація — недостатнє навантажувальне тестування. Без нього кожен ріст трафіку — рулетка. Ми вирішуємо цю проблему: проводимо тести, виявляємо вузькі місця та гарантуємо, що сайт витримає пік. Понад 10 років досвіду у навантажувальному тестуванні Бітрікс, виконано більше 50 проектів. Середня вартість навантажувального тесту — від 100 000 до 200 000 грн, але економія 500 000 грн від запобігання збоям може перевищувати цю суму.
Навантажувальне тестування (load testing) — це процес перевірки поведінки системи під очікуваним і піковим навантаженням (Wikipedia). Для Бітрікс це особливо важливо через особливості архітектури, такі як торговий каталог та інфоблоки. Оптимізація Бітрікс під навантаженням включає налаштування кешування та SQL-індексів для підвищення пропускної здатності.
Як підготувати сайт Бітрікс до навантажувального тестування?
Перед запуском тестів переконайтеся, що базова оптимізація виконана: SQL-індекси, кешування та OPcache. Тестувати неоптимізований сайт — безглуздо (отримаєте worst case, а не реальну картину). Ми починаємо з аудиту конфігурації сервера: версії PHP та MySQL, налаштування кешування на Redis, перевірка сесій та файлового кешу. Redis швидше файлового кеша в 10 разів при високому навантаженні, що зменшує затримки. Для моніторингу сервера Бітрікс використовуйте Prometheus та Grafana.
Які інструменти обрати для тестування Бітрікс?
Основні інструменти — Apache JMeter та k6. JMeter багатофункціональний, з GUI, підтримує сценарії з авторизацією, кошиком та AJAX. k6 — сучасний, сценарії на JavaScript, легко вбудовується в DevOps. Порівняння: JMeter кращий у складних сценаріях (наприклад, з CSRF-токенами), але k6 простіше інтегрувати в CI/CD. Для вибору варто оцінити обсяг тестів та інфраструктуру.
Приклад сценарію на k6 для інтернет-магазину:
import http from 'k6/http'; import { check, sleep } from 'k6'; export const options = { stages: [ { duration: '2m', target: 50 }, { duration: '5m', target: 50 }, { duration: '2m', target: 200 }, { duration: '5m', target: 200 }, { duration: '2m', target: 0 }, ], thresholds: { http_req_duration: ['p(95)<2000'], http_req_failed: ['rate<0.01'], }, }; export default function() { const res = http.get('https://yourshop.ru/catalog/'); check(res, { 'status 200': (r) => r.status === 200 }); sleep(Math.random() * 3 + 1); } Що тестуємо
Повний цикл включає чотири типи тестів:
- Навантажувальний тест (Load Test) — поступове нарощування до очікуваного піку для пошуку точки деградації.
- Стрес-тест (Stress Test) — навантаження вище максимуму для перевірки відновлення.
- Spike Test — різкий стрибок (імітація вірусного посту).
- Soak Test — тривале навантаження для виявлення витоків пам'яті.
Як провести навантажувальне тестування за 5 кроків
1. Складіть сценарій на основі аналітики відвідуваності та бізнес-метрик. 2. Налаштуйте інструмент (JMeter/k6) та запустіть базовий тест. 3. Організуйте моніторинг сервера (Prometheus + Grafana). 4. Запустіть повний цикл тестів — load, stress, spike, soak. 5. Аналізуйте результати, оптимізуйте та повторіть для підтвердження.Сценарії для Бітрікс-магазину
Реалістичний сценарій навантажує типовий шлях користувача:
40% — перегляд сторінок каталогу 20% — пошук 15% — картки товарів 10% — додавання до кошика 8% — авторизація та особистий кабінет 7% — оформлення замовлення Додавання до кошика через /bitrix/tools/sale_basket.php — AJAX з CSRF-токеном. JMeter або k6 мають витягувати його зі сторінки та передавати в POST.
Моніторинг під час тесту
Без моніторингу сервера тест неповноцінний. Ми використовуємо Prometheus + node_exporter + Grafana для збору метрик в реальному часі. Ключові точки:
- PHP-FPM:
pm.status_path = /fpm-status— якщо active processes = max_children, воркери вичерпані. - MySQL:
SHOW PROCESSLIST— блокування та slow queries, важливо враховувати ізоляцію транзакцій. - Бітрікс: панель продуктивності під навантаженням.
- Системні метрики: CPU, RAM, disk I/O.
Типові вузькі місця Бітрікс під навантаженням
PHP-FPM вичерпує воркери. При pm.max_children = 20 — 20 одночасних PHP-запитів. Рішення: збільшити max_children з урахуванням RAM (кожен воркер 50–150 МБ) або оптимізувати час відповіді.
MySQL: занадто багато з'єднань. 100 воркерів × 3 сайтів = 300 з'єднань. При max_connections = 151 — помилки. ProxySQL мультиплексує з'єднання.
Файловий кеш під навантаженням. При 200 користувачах — блокування. Перехід на Redis усуває проблему.
Сесії в файлах. Аналогічна проблема — Redis-сесії стабільніші.
Що входить у роботу (під ключ)
- Складання реалістичних сценаріїв на основі аналітики
- Налаштування інструментів (JMeter/k6) та моніторингу
- Проведення 4 типів тестів
- Аналіз результатів з графіками та рекомендаціями
- Допомога в оптимізації (кешування, SQL, конфігурація)
- Фінальний повторний тест для підтвердження покращень
- Термін виконання: за 1 тиждень
Оцінимо ваш проект — пишіть нам!
Як інтерпретувати результати?
| Метрика | Добре | Допустимо | Погано |
|---|---|---|---|
| p95 часу відповіді | < 1 с | 1–3 с | > 3 с |
| Помилки (5xx) | 0% | < 0.1% | > 1% |
| CPU сервера | < 50% | 50–80% | > 80% |
| PHP-FPM активні / max | < 60% | 60–85% | > 90% |
Терміни
| Завдання | Термін |
|---|---|
| Складання сценаріїв + налаштування інструментів | 1–2 дні |
| Базовий навантажувальний тест + аналіз | 1 день |
| Налаштування моніторингу | 1 день |
| Ітерація: оптимізація + повторний тест | 2–3 дні |
| Повний цикл (4 тести + звіт) | 1 тиждень |
Також можливе тестування Бітрікс24. Хочете бути впевнені в стабільності сайту? Зв'яжіться з нами — ми проведемо навантажувальне тестування та надамо детальний звіт з рекомендаціями. Замовте тест зараз.







