Уявіть: інтернет-магазин на Бітрікс працює стабільно, але в обідній час сайт починає гальмувати — сторінки завантажуються по 10–15 секунд, менеджери скаржаться, частина відвідувачів іде. Ви запускаєте htop: CPU завантажений під 100%, але незрозуміло, що саме його жере. Минає година — навантаження спадає. Наступного дня історія повторюється. Без історичних даних причину не знайти: її потрібно ловити в момент піку. Ми стикалися з такою ситуацією десятки разів. Правильно налаштований моніторинг фіксує аномалії та пов'язує їх з подіями — агенти, cron-завдання, деплої.
Одна година простою інтернет-магазину може коштувати 30 000–60 000 грн, тому налаштування моніторингу швидко окупається. Наш досвід 10+ років гарантує якісне виконання. У Бітрікс-проектах основні споживачі CPU — php-fpm, mysqld і агенти (b_agent). PHP-FPM виконує код, який генерує сторінки та обробляє дії користувачів. MySQL відповідає за запити до бази — неоптимізовані запити можуть надовго завантажувати ядро. Агенти виконують фонові завдання: оновлення пошукового індексу, вивантаження каталогу, обробку замовлень. Кожен агент додає мікросекунди, але при великій кількості або неправильних інтервалах вони створюють постійне навантаження.
Важливо не лише дивитися на поточне завантаження, а й вміти аналізувати тренди. Для цього ми використовуємо Prometheus + Grafana, а для швидких перевірок — htop і mpstat.
Значення моніторингу CPU для Бітрікс-сервера
Висока завантаженість CPU — це наслідок, а не причина. Без моніторингу ви бачите лише симптом, але не знаєте, який процес його викликав. За даними офіційної документації Бітрікс, неправильно налаштовані агенти викликають до 30% зайвого навантаження. Load average — це системна метрика, що показує середню кількість процесів, які очікують виконання. У 70% випадків проблемний сервер має load average вище числа ядер.
Діагностика: PHP vs MySQL
Для швидкої діагностики використовуємо команди:
htop -d 20
mpstat -P ALL 5
pidstat -p <PID> 5
Якщо mysqld споживає >50% CPU, дивимось slow-запити:
SHOW FULL PROCESSLIST;
SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 5;
Проблеми PHP часто приховані в коді: php-fpm status покаже кількість активних процесів. Якщо вони постійно на максимумі — нестача воркерів. У 40% випадків проблема вирішується збільшенням pm.max_children.
Ефективні інструменти моніторингу для Бітрікс
Для оперативної діагностики найкраще підходить htop — він показує процеси та деревоподібну структуру. mpstat дає розбивку по ядрах, зручний для виявлення проблем з I/O wait. Для довгострокового аналізу та побудови графіків використовуємо Prometheus + Grafana: вони зберігають місяці метрик і дозволяють виявити тренди. atop зберігає історію за останні дні та не потребує налаштування. Ми перепробували десятки інструментів і зупинилися на цій зв'язці: вона покриває 95% випадків. За нашими тестами, Prometheus виявляє аномалії в 3 рази швидше, ніж ручний аналіз htop.
Покрокова інструкція з налаштування моніторингу CPU
Установка Prometheus + Grafana займає від 2 до 4 годин, включаючи налаштування алертів. Ось типовий план:
- Аудит поточного стану: перевірте
uptime,cat /proc/loadavg, визначте топ процесівps aux --sort=-%cpu | head -10. - Встановіть node_exporter на сервер: завантажте та запустіть з правами на читання метрик CPU, пам'яті, диска.
- Налаштуйте Prometheus: у конфігурації
prometheus.ymlдодайте target для node_exporter (наприклад,localhost:9100). - Імпортуйте дашборд у Grafana: використовуйте готовий шаблон Node Exporter Full (ID 1860) або створіть свій з метриками CPU utilisation, load average, I/O wait.
- Налаштуйте Alertmanager: додайте правило для високої завантаженості CPU, наприклад при
(node_load1 / count(count(node_cpu_seconds_total) by (cpu))) > 2протягом 10 хвилин. - Протестуйте алерти: змоделюйте навантаження за допомогою
stress --cpu 4та перевірте спрацювання.
Типові пороги навантаження:
| Метрика | Критичний рівень | Дія |
|---|---|---|
| Load average / число ядер | > 2.0 | Перевірити процеси, алерт |
| I/O wait | > 10% | Дивитись disk usage, slow queries |
| CPU utilization mysqld | > 80% | Оптимізувати запити |
| CPU utilization php-fpm | > 70% | Збільшити max_children або оптимізувати код |
Приклад швидкої діагностики
В одному проекті load average тримався на рівні 3.5 при 2 ядрах. Після аналізу з'ясувалося, що агент оновлення пошукового індексу запускався кожні 5 хвилин. Перенесення на cron з nice знизив load до 1.2.Чек-лист швидкої діагностики при високій завантаженості CPU
- Перевірте load average через
uptimeабоcat /proc/loadavg. - Для швидкої діагностики гальм визначте топ процесів по CPU:
ps aux --sort=-%cpu | head -10. - Якщо mysqld лідирує, увімкніть slow query log та проаналізуйте запити.
- Якщо php-fpm — перевірте
pm.status_pathна наявність черги. - Подивіться агенти:
SELECT NAME, LAST_EXEC, NEXT_EXEC FROM b_agent WHERE ACTIVE='Y' ORDER BY LAST_EXEC LIMIT 10; - Перенесіть важкі агенти на cron з
nice -n 19та розбийте на пакети.
Середня економія на серверних ресурсах після впровадження моніторингу становить 20–40% — за рахунок виявлення неефективних запитів і агентів. Наприклад, переведення одного важкого агента на правильний cron може знизити пікове навантаження вдвічі. Завдяки сертифікованим фахівцям (досвід 10+ років) ми гарантуємо результат.
Робота з налаштування моніторингу: що входить
Ми пропонуємо послугу під ключ: від аудиту до передачі документації. У рамках типового проекту:
- Аудит продуктивності сервера (CPU, пам'ять, диск, налаштування PHP та MySQL).
- Установка та налаштування Prometheus + node_exporter + Grafana.
- Створення дашборду з ключовими метриками (CPU, load average, I/O wait, топ процесів).
- Налаштування алертів у Telegram/Slack.
- Оптимізація php-fpm (max_children, pm.max_requests) та агентів (перенесення на cron, інтервали).
- Передача документації з інструкціями та доступів.
- Підтримка протягом місяця після впровадження.
Терміни робіт: від 2 до 5 днів залежно від складності. Вартість розраховується індивідуально — оцінимо ваш проект за один робочий день. Зв'яжіться з нами, щоб обговорити деталі.
Практичний приклад
Нещодавно до нас звернувся інтернет-магазин з каталогом у 50 000 товарів. Щоночі агент оновлював пошуковий індекс, завантажуючи CPU на 100% протягом години. Це викликало збої у фонових завданнях. Ми перенесли агент на cron з nice 19 та розбили на пакети по 1000 товарів. Пікове навантаження знизилося з 100% до 30%, а час виконання скоротився з 60 до 12 хвилин. Додатково налаштували алерт при load average > 1.5 — тепер команда дізнається про проблеми до того, як вони вплинуть на користувачів.
Етапи роботи
| Етап | Тривалість | Результат |
|---|---|---|
| Експрес-аудит | 1 день | Звіт за поточними метриками CPU, вузькими місцями |
| Проектування | 1 день | План оптимізації, вибір інструментів |
| Налаштування моніторингу | 1-2 дні | Prometheus + Grafana, алерти |
| Оптимізація | 1-2 дні | php-fpm, агенти, MySQL (за необхідності) |
| Передача та навчання | 1 день | Документація, дашборди, доступи |
Середня економія на оренді серверів після впровадження моніторингу становить 20–40%, що для середнього проекту дає 30 000–60 000 грн щомісячної економії. Отримайте консультацію з налаштування моніторингу вашого сервера — ми запропонуємо оптимальне рішення під вашу інфраструктуру. Замовте аудит, і ми виявимо вузькі місця вашого сервера Бітрікс. Наш досвід — понад 10 років і 500+ проектів з оптимізації та підтримки Бітрікс.







