Нагрузка phpBB на хостинг: сколько ядер CPU нужно и что упирается первым
Когда растёт онлайн, phpBB бьёт не только по CPU, но и по базе и диску. Типичная страница форума собирается из десятков запросов к базе, шаблонов, аватаров и вложений. Если сервер не подготовлен, рост RPS превращается в лавину 5xx и долгих ответов, хотя визуально нагрузки «немного».
Важно понимать профиль. Гости читают темы и разделы, это динамика на чтение. Авторизация, поиск, отправка сообщений и лички тяжелее и чувствительнее к latency базы. Боты добавляют шум, особенно если кеш и GeoIP настроены плохо. Из коробки phpBB может жить и на 1 vCPU, но предсказуемость появляется только после правильной настройки OPcache, PHP-FPM, Nginx и InnoDB.
Оценка по ядрам опирается на среднюю стоимость страницы. На современном PHP 8.2 с OPcache и MariaDB на NVMe динамическая страница phpBB обычно «съедает» 50–120 мс CPU времени. Это даёт грубый ориентир 8–16 динамических запросов в секунду на одно vCPU при условии, что база в памяти и диск быстрый. Без кешей и с медленным диском цифры падают до 4–8 RPS на ядро.
Задача не в том, чтобы «накидать ядер», а убрать узкие горлышки. В большинстве кейсов первым упираются IOPS и сеть соединений, а уже затем CPU. Ниже даю практические ориентиры, таблицу размеров и настройки, которые сразу снимают боль.
Что нагружает phpBB больше всего
-
Просмотр темы и раздела с большим числом сообщений и вложений.
-
Поиск и индексатор, особенно без внешнего поискового движка.
-
Одновременные авторизованные сеансы с непрогретым кешем.
-
Расширения, которые добавляют запросы на каждую страницу.
-
Боты и сканеры при неправильной конфигурации robots и кешей.
Ориентиры производительности на одно vCPU
-
С PHP 8.2 + OPcache, Nginx + PHP-FPM, MariaDB 10.6+, NVMe
-
Динамика чтения гостями: 8–16 RPS на 1 vCPU при p95 ниже 250–300 мс.
-
С авторизацией и поиском: 5–10 RPS на 1 vCPU.
-
-
Без OPcache или на медленном диске
-
Динамика падает до 4–8 RPS на 1 vCPU даже при той же базе.
-
-
Формула прикидки
-
RPS на ядро приблизительно равно 0.6 ÷ t_php, где t_php в секундах среднее CPU-время генерации страницы. Пример: t_php = 0.08 с даёт около 7.5–10 RPS на ядро с учётом накладных.
-
Быстрый sizing по онлайнам
Онлайн одновременно |
Оценочный RPS динамики |
Рекомендовано vCPU |
RAM |
Диск |
Комментарии |
---|---|---|---|---|---|
50 гостей |
5–8 |
2 |
4–6 ГБ |
SSD |
OPcache, базовый тюнинг InnoDB |
200 гостей |
12–20 |
4 |
8–12 ГБ |
NVMe |
Redis кеш, microcache для гостей |
500 гостей |
25–40 |
6–8 |
16–24 ГБ |
NVMe |
БД на отдельном томе или VDS |
1000+ гостей |
50–80 |
12+ |
24–32 ГБ |
NVMe RAID |
Разделение ролей, реплика БД по чтению |
Примечание: это рабочие ориентиры, итог зависит от расширений, шаблонов, доли авторизованных пользователей и поиска.
Настройки, которые сразу экономят CPU
OPcache
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=100000
JIT отключать для phpBB, это веб-приложение, выигрыша почти нет
PHP-FPM
pm=dynamic
pm.max_children
рассчитывать как RAM_под_PHP ÷ средний_расход_на_воркер
отдельные пулы для фронта и админки
Nginx
worker_processes auto, worker_connections 8192
отдавать статику без PHP, включить sendfile и gzip_static
microcache на 1–5 секунд для гостей на страницах viewtopic и viewforum
MariaDB
innodb_buffer_pool_size 60–70 процента RAM сервера БД
innodb_log_file_size 512M, innodb_flush_log_at_trx_commit=2 для снижения fsync
отключить query_cache, использовать utf8mb4
включить slow_query_log и разбирать запросы длиннее 300 мс
Кеш и сессии
Redis для кеша и сессий phpBB, хранение в памяти разгружает диск
cron phpBB запускать системным cron раз в минуту, а не ждать ботов
Когда масштабировать
-
CPU
-
средняя загрузка выше 70 процентов 15 минут и более
-
run queue стабильно больше числа vCPU
-
-
Память
-
буфер InnoDB не помещает активный набор данных и начинается своп
-
-
Диск
-
p95 latency выше 10 мс на NVMe или I/O wait выше 10 процентов
-
-
Сеть и соединения
-
очередь SYN и дропы backlog, TIME_WAIT шторм при пиках
-
Чек-лист топ 5 советов
- Включите OPcache и перенесите статику на Nginx, а не через PHP.
- Дайте базе память: 60–70 процентов RAM под InnoDB buffer pool и NVMe для данных.
- Включите Redis и microcache для гостей, это снижает динамику в разы.
- Следите за p95 latency, slow log и I/O wait, а не только за процентом CPU.
- Не смешивайте базу и веб при больших онлайнах, вынесите БД на отдельный VDS.
Что входит при заказе у нас
-
Поднимем phpBB на оптимальном LAMP с OPcache, Redis и тюнингом MariaDB.
-
Настроим microcache и корректный cron форума, мигрируем базу и файлы.
-
При аренде от 6 месяцев настраиваем серверы бесплатно.
Как оформить заказ
-
Выберите тариф хостинга или VDS на сайте и укажите примерную нагрузку: средний онлайн, пиковый RPS, наличия поиска и расширений.
-
Мы предложим конфигурацию по ядрам, памяти и диску, согласуем перенос и график работ.
Акция для клиентов QCKL
-
При оплате хостинга или VPS от 6 месяцев удвоим оплаченный период.
-
Оформите заказ сейчас и укажите в комментарии к заявке текст «Удвоение периода 6+ месяцев». Закрепим условия и активируем приоритетно.