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

3 Answers 3


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.

  • It's a dating website with php chat and users send millions of instant messages. Last night when I had ~300 users online, the command netstat -an |grep 80 |wc - result was almost 400. Feb 16, 2013 at 15:50
  • 1
    I actually have a similar dating website. I think you definitely need more PHP children. My configuration is as following: 20k concurrent online users, 12 PHP machines with 8 Cores each, 32 workers on each of the PHP machines. That works pretty well. You should also look at how much free memory you have, I suspect you have some, unless your PHP is huge. If you have free memory, why not use it for some more workers?
    – replay
    Feb 16, 2013 at 15:51
  • @user1821484 This is correct; pm.max_children is much too low. A value of 10 is reasonable for a small VPS server with 1GB of RAM; you have a much larger server. Raise this value until you stop receiving the errors, then raise it again in case you get a traffic spike. Feb 16, 2013 at 19:36
  • 1
    Thanks for answers. I increased pm.max_children setting to 10 and now I started to get this error: WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 8 total children. Can somebody suggest me what I need to increase? Thanks. Feb 17, 2013 at 17:12
  • cores x 2 or cores x 4 sounds really low to me. I have a machine with 8 cores and 8GB RAM with pm.max_children=48 and we still get the server reached pm.max_children warnings. This machine is nowhere near its CPU or memory limits. A better approach I think would be to optimize this setting in conjunction with corresponding nginx (or apache) settings and choose a value after determining how much memory each PHP process consumes.
    – S. Imp
    Jan 24, 2019 at 2:29

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

I had the same problem whith my docker php-fpm and I fixed it by modifing parameters in these files: /usr/local/etc/php-fpm.d/www.conf /usr/local/etc/php-fpm.d/www.conf.default

The new parameters are :

pm = dynamic
pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.