Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: fpm, configuration

Как настраивается количество воркеров в PHP-FPM?

Этот вопрос проверяет практическое знание конфигурационных директив FPM пула, отвечающих за управление процессами.

Короткий ответ

Количество воркеров настраивается в конфигурационном файле пула PHP-FPM (обычно www.conf) с помощью нескольких ключевых директив. Основные из них: pm (менеджер процессов), pm.max_children (общее максимальное количество воркеров), pm.start_servers (количество воркеров при старте), pm.min_spare_servers (минимальное количество свободных воркеров) и pm.max_spare_servers (максимальное количество свободных воркеров). Эти значения подбираются в зависимости от доступной оперативной памяти и ожидаемой нагрузки.

Длинный ответ

Настройка производительности PHP-FPM заключается в правильной конфигурации пула процессов. Это делается в файле, обычно расположенном в /etc/php/8.x/fpm/pool.d/www.conf.

Ключевые директивы для настройки пула:

  • pm (process manager)

    • Определяет алгоритм управления процессами.

    • static — фиксированное количество воркеров (pm.max_children).

    • dynamic — гибкое количество воркеров в заданных пределах (наиболее популярный).

    • ondemand — воркеры создаются только при поступлении запроса.

  • pm.max_children

    • Самая важная директива. Задает абсолютный максимум одновременно работающих воркеров.

    • Как рассчитать: (Общая память сервера - Запас на ОС и другое) / Средний размер памяти на 1 PHP-процесс.

  • Директивы для режима dynamic:

    • pm.start_servers — количество воркеров, запускаемых при старте FPM.

    • pm.min_spare_servers — минимальное количество простаивающих воркеров. Если меньше, FPM создаст новые.

    • pm.max_spare_servers — максимальное количество простаивающих воркеров. Если больше, FPM завершит лишние.

    • pm.process_idle_timeout — время, через которое простаивающий воркер будет завершен (в режиме ondemand/dynamic).

Пример конфигурации для небольшого сервера:

; /etc/php/8.2/fpm/pool.d/www.conf
[www]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock

pm = dynamic
; Рассчитано для сервера с 2GB RAM и ~50MB на процесс
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 ; Перезапускать воркер после обработки 500 запросов для борьбы с утечками памяти

Вывод: Настройка количества воркеров — это баланс между производительностью и потреблением памяти. Режим dynamic является наиболее гибким. Необходимо мониторить использование памяти и загрузку CPU, чтобы подобрать оптимальные значения, особенно для pm.max_children.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • PHP

    PHP

Ключевые слова

#fpm

#configuration

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.