php5-fpm: server reached pm.max_children
I have Nginx + php5-fpm. Several times per hour my website stucks and in logfile I see the following:
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it.
/etc/php5/fpm/pool.d/www.conf file contains the following configuration:
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Server: AMD Opteron™ 3280, Octo-Core, 8x 2.4 GHz, 16 GB DIMM (DDR3).
I have no idea what numbers should I put in www.conf file for this server. Can me help somebody? Thanks
There are many possible reasons why your PHP-FPM would reach the max_children
. Most common ones are:
- A lot of parallel requests from your clients
- Slow execution of the PHP scripts
- Very low setting of the
max_children
Looking at the specs of your machine, assuming there is nothing else than PHP+Nginx running, I think you could set it much higher than 5. You say you have 8 Cores, usually Nginx needs much less CPU than PHP, so with 5 children you will probably never be able to use all of them. I'm usually setting it to something like the number of cores x 2 or number of cores x 4, depending on the memory consumption of your PHP scripts.
I found that by setting the pm.max_requests value (which is commented out by default) helped in fixing these errors. This setting forces child requests to respawn after executing a certain number of requests and can be helpful if there are memory leaks somewhere in your code or 3rd party libs.
In /etc/php-fpm.d/www.conf:
pm.max_requests = 500