Действия

Php-fpm

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

О zend_extension и extension
Всякое о php-fpm

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

Connection

Лучше всего использовать сокет для подключения к php-fpm, т.к. он работает быстрее, чем 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 ;сколько максимально "детей" (ondemand,static,dynamic)


;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 ;в течение какого периода

src

Разное

Раздел "Stability"

Performace & Connection

Оптимизация PHP ruhighload