FPM: Difference between revisions
From DWIKI
(2 intermediate revisions by the same user not shown) | |||
Line 14: | Line 14: | ||
==Settings== | ==Settings== | ||
===pm.max_children=== | ===pm.max_children=== | ||
Rather complex, maybe have it larger than start_servers + max_spare_servers? | |||
=Monitoring PHP-FPM= | =Monitoring PHP-FPM= | ||
Line 58: | Line 59: | ||
dynamic - the number of child processes are set dynamically based on the | dynamic - the number of child processes are set dynamically based on the | ||
following directives: | following directives: | ||
pm.max_children - the maximum number of children that can | pm.max_children - the maximum number of children that can | ||
be alive at the same time. Has to be at least as high as pm.max_spare_servers | be alive at the same time. Has to be at least as high as pm.max_spare_servers | ||
Line 64: | Line 66: | ||
this value must not be less than min_spare_servers | this value must not be less than min_spare_servers | ||
and not greater than max_spare_servers. | and not greater than max_spare_servers. | ||
; Default Value: (min_spare_servers + max_spare_servers) / 2 | |||
pm.min_spare_servers - the minimum number of children in 'idle' | pm.min_spare_servers - the minimum number of children in 'idle' | ||
Line 76: | Line 79: | ||
=FAQ= | =FAQ= | ||
==[pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers)== | |||
==error messages== | ==error messages== | ||
===pm.min_spare_servers(3) and pm.max_spare_servers(7) cannot be greater than pm.max_children(5)=== | ===pm.min_spare_servers(3) and pm.max_spare_servers(7) cannot be greater than pm.max_children(5)=== |
Revision as of 10:41, 5 February 2025
FastCGI Process Manager
Links
Tuning php-fpm
Links
Settings
pm.max_children
Rather complex, maybe have it larger than start_servers + max_spare_servers?
Monitoring PHP-FPM
Metrics
listen queue
max listen queue
listen queue len
idle processes
active processes
total processes
max active processes
max children reached
slow requests
fpm configuration
pm.status_listen = 127.0.0.1:9001 pm.status = /fpm-status pm.ping = /fpm-ping
Apache
- I suppose you don't really have to use separate port for this, but might avoid problems
Listen 127.0.0.1:89 <Virtualhost 127.0.0.1:89> <Location /fpm-status> Require host localhost ProxyPass unix:/run/php/php-fpm.sock|fcgi://localhost:9001 </Location> <Location /fpm-ping> Require host localhost ProxyPass unix:/run/php/php-fpm.sock|fcgi://localhost:9001 </Location> </VirtualHost>
HOWTO
Configuring number of servers
dynamic - the number of child processes are set dynamically based on the following directives:
pm.max_children - the maximum number of children that can be alive at the same time. Has to be at least as high as pm.max_spare_servers
pm.start_servers - the number of children created on startup. this value must not be less than min_spare_servers and not greater than max_spare_servers. ; Default Value: (min_spare_servers + max_spare_servers) / 2
pm.min_spare_servers - the minimum number of children in 'idle' state (waiting to process). If the number of 'idle' processes is less than this number then some children will be created.
pm.max_spare_servers - the maximum number of children in 'idle' state (waiting to process). If the number of 'idle' processes is greater than this number then some children will be killed.
FAQ
[pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers)
error messages
pm.min_spare_servers(3) and pm.max_spare_servers(7) cannot be greater than pm.max_children(5)
Obviously, pm.max_children has to be at least as high as pm.max_spare_servers
proxy_fcgi AH01071: Got error 'Primary script unknown'
The fcgi 404, so you're requesting a nonexisting link
AH01079: failed to make connection to backend: httpd-UDS
USB = Unix Domain Socket, look for logging/config about the socket involved
WARNING: [pool www] ACL set, listen.owner = 'apache' is ignored
Redhat feature, check commenting out acl_users in www.conf
AH01144: No protocol handler was valid for the URL /fpm-ping (scheme 'fcgi').
If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
a2enmod proxy_fcgi
Show php-fpm config
php-fpm8.0 -tt