PHP-FPM (FastCGI Process Manager) — это мощный инструмент для управления процессами PHP. Он позволяет улучшить производительность и масштабируемость веб-приложений. В этом руководстве мы рассмотрим все параметры конфигурации PHP-FPM и их значения.
Введение
Конфигурационный файл PHP-FPM обычно находится по пути /etc/php/8.3/fpm/php-fpm.conf
. Основные параметры конфигурации делятся на несколько категорий: глобальные настройки, настройки пула процессов и настройки логирования.
Основная часть
Глобальные настройки
Глобальные настройки применяются ко всем пулам процессов и определяют основные параметры работы PHP-FPM.
- include: Путь к файлам конфигурации других пулов процессов. Например:
include=/etc/php/8.3/fpm/pool.d/*.conf
- pid: Путь к файлу PID (Process ID). Например:
pid=/run/php/php8.3-fpm.pid
- error_log: Путь к файлу журнала ошибок. Например:
error_log=/var/log/php8.3-fpm.log
- log_level: Уровень логирования. Возможные значения: alert, error, warning, notice, debug. Например:
log_level=notice
- emergency_restart_threshold: Количество ошибок перед перезапуском FPM. Например:
emergency_restart_threshold=10
- emergency_restart_interval: Интервал времени между перезапусками FPM при возникновении ошибок. Например:
emergency_restart_interval=1m
- process_control_timeout: Время ожидания завершения процесса перед его принудительным завершением. Например:
process_control_timeout=10s
- daemonize: Запускать ли FPM как демон. Возможные значения: yes, no. Например:
daemonize=yes
Настройки пула процессов
Каждый пул процессов имеет свои собственные настройки, которые определяют количество процессов, их поведение и другие параметры.
- [pool_name]: Имя пула процессов. Это должно быть уникальное имя для каждого пула.
- listen: Адрес и порт, на которых будет слушать пул процессов. Например:
listen=/run/php/php8.3-fpm.sock
- listen.backlog: Длина очереди для входящих соединений. Например:
listen.backlog=-1
- listen.owner, listen.group, listen.mode: Владелец, группа и режим доступа для сокета. Например:
listen.owner=www-data
listen.group=www-data
listen.mode=0660
- user, group: Пользователь и группа, от имени которых будут запускаться процессы PHP. Например:
user=www-data
group=www-data
- pm: Тип менеджера процессов (Process Manager). Возможные значения:
- 'static': фиксированное количество дочерних процессов.
- 'dynamic': динамическое управление количеством дочерних процессов.
- 'ondemand': процессы создаются при необходимости.
pm=dynamic
. - pm.max_children: Максимальное количество дочерних процессов. Например:
pm.max_children=50
- pm.start_servers: Количество стартовых серверов (только для 'dynamic'). Например:
pm.start_servers=5
- pm.min_spare_servers: Минимальное количество свободных серверов (только для 'dynamic'). Например:
pm.min_spare_servers=2
- pm.max_spare_servers: Максимальное количество свободных серверов (только для 'dynamic'). Например:
pm.max_spare_servers=10
- pm.process_idle_timeout: Таймаут простоя процесса (только для 'ondemand'). Например:
pm.process_idle_timeout=10s
- pm.max_requests: Максимальное количество запросов на один процесс до его перезапуска. Например:
pm.max_requests=500
- access.log: Путь к файлу журнала доступа. Например:
access.log=/var/log/php8.3-fpm-access.log
- access.format: Формат журнала доступа. Например:
access.format="%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
- slowlog: Путь к файлу журнала медленных запросов. Например:
slowlog=/var/log/php8.3-fpm-slow.log
- request_slowlog_timeout: Таймаут медленного запроса. Например:
request_slowlog_timeout=5s
- request_terminate_timeout: Таймаут завершения запроса. Например:
request_terminate_timeout=30s
- rlimit_files: Ограничение на количество открытых файлов. Например:
rlimit_files=1024
- rlimit_core: Ограничение на размер core-файлов. Например:
rlimit_core=0
- chdir: Изменение рабочей директории перед запуском процесса. Например:
chdir=/var/www
- catch_workers_output: Перехватывать ли вывод рабочих процессов. Возможные значения:
'yes'
,'no'
. Например:catch_workers_output=yes
Настройки логирования
Логирование помогает отслеживать работу PHP-FPM и выявлять проблемы в работе приложения. Настройки логирования включают в себя следующие параметры:
- error_log: Путь к файлу журнала ошибок. Пример:
error_log=/var/log/php8.3-fpm-error.log
- log_level: Уровень логирования. Возможные значения:
- 'alert'
- 'error'
- 'warning'
- 'notice'
- 'debug'
log_level=notice
Заключение
Мы рассмотрели основные параметры конфигурации PHP-FPM, которые помогут вам оптимизировать работу ваших веб-приложений. Правильная настройка этих параметров может значительно повысить производительность и стабильность вашего сервера. Если у вас возникли вопросы или требуется дополнительная информация, вы можете обратиться к официальной документации по адресу: официальная документация по PHP-FPM.
Резюме ключевых моментов
- Глобальные настройки определяют основные параметры работы PHP-FPM, такие как путь к файлу PID, уровень логирования и параметры перезапуска.
- Настройки пула процессов включают в себя параметры управления процессами, такие как количество дочерних процессов, тип менеджера процессов и таймауты простоя.
Следуя этому руководству и правильно настраивая параметры конфигурации PHP-FPM, вы сможете добиться высокой производительности и надежности своих веб-приложений.