Действия

Php-fpm: различия между версиями

Материал из lulzette's wiki

Строка 26: Строка 26:
;dynamic  
;dynamic  
pm = dynamic
pm = dynamic
pm.max_children = 4 ;сколько максимально "детей"
pm.max_children = 4 ;максимальное количество дочерних процессов
pm.min_spare_servers = 1 ;сколько минимально "детей"
pm.min_spare_servers = 1 ;минимальное количество процессов, ожидающих соединения (запросов для обработки)
pm.max_spare_servers = 3  
pm.max_spare_servers = 3 ;максимальное количество процессов, ожидающих соединения (запросов для обработки)
pm.start_servers = 2  
pm.start_servers = 2 ;количество процессов при старте


</source>
</source>

Версия от 20:51, 20 сентября 2020

Здесь будут мои размышления на счет конфигурирования пхпфпм

Основной конфиг хранится в /etc/php/*version*/fpm/php-fpm.conf, конфиг самого пхп расположен в php.ini в той же директории, конфиг пула - pool.d/poolname.conf

Подключение

Лучше всего использовать сокет, т.к. он работает быстрее, чем tcp, сравнение можно найти здесь: https://stackoverflow.com/questions/14973942/tcp-loopback-connection-vs-unix-domain-socket-performance :

#Nginx:
fastcgi_pass unix:/run/php/php7.4-fpm.sock;

#php-fpm:
listen = /var/run/php5-fpm.sock

Performance

Надежнее всего ondemand, но он медленный ибо необходимо время на инициализацию, лучше использовать dynamic или static, однако с ними может возникнуть непонятная 502 (возможно чисто на моем хосте проблема такая):

;pm = ondemand
;pm.max_children = 4 ;сколько максимально "детей"


;dynamic 
pm = dynamic
pm.max_children = 4 ;максимальное количество дочерних процессов
pm.min_spare_servers = 1 ;минимальное количество процессов, ожидающих соединения (запросов для обработки)
pm.max_spare_servers = 3 ;максимальное количество процессов, ожидающих соединения (запросов для обработки)
pm.start_servers = 2 ;количество процессов при старте

Stability

У меня на сервере сама по себе возникала моментальная ошибка 502 с сообщением в логе php-fpm:

[20-Sep-2020 20:00:20] WARNING: [pool www] child 7437 exited on signal 11 (SIGSEGV) after 1.353950 seconds from start
[20-Sep-2020 20:00:20] NOTICE: [pool www] child 7440 started

От такого помогут директивы emergency_restart_threshold и emergency_restart_interval, при указании данных директив и получении SIGSEGV или SIGBUS детьми php-fpm будет перезапущен:

emergency_restart_threshold = 10 ;пороговое количество ошибок перед рестартом
emergency_restart_interval = 1m ;в течение какого периода