Php-fpm: различия между версиями
Материал из lulzette's wiki
Losted (обсуждение | вклад) Нет описания правки |
Losted (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
[[Category:Админство (Ops)]] | [[Category:Админство (Ops)]] | ||
[https://habr.com/ru/post/358714/ О zend_extension и extension] | [https://habr.com/ru/post/358714/ О zend_extension и extension] <br> | ||
Всякое о php-fpm | Всякое о php-fpm | ||
Текущая версия от 14:29, 12 января 2021
О 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 ;в течение какого периода