FPM

From DWIKI

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

  1. 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


server reached pm.max_children setting