Php-fpm: различия между версиями
Материал из lulzette's wiki
Losted (обсуждение | вклад) |
Losted (обсуждение | вклад) (→src) |
||
Строка 50: | Строка 50: | ||
= src = | = src = | ||
[http://pektop.net/2013/09/sovety-po-nastrojke-i-optimizacii-nginx-i-php-fpm/ Разное] | |||
[https://rtfm.co.ua/nginx-nastrojka-servera-i-php-fpm/ Раздел "Stability"] | |||
[https://hcbogdan.com/php/2016/09/16/php-fpm-dynamic/ Performace & Connection] | |||
[https://ruhighload.com/%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+php Оптимизация PHP ruhighload] |
Версия от 17:09, 13 декабря 2020
Здесь будут мои размышления на счет конфигурирования пхпфпм
Основной конфиг хранится в /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 ;в течение какого периода