1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PHP-FPM Problem

Discussion in 'Server Configuration and Hosting' started by Sheratan, Feb 18, 2014.

  1. Sheratan

    Sheratan Well-Known Member

    From the beginning, I used default php5-fpm configuration in www.conf
    Code:
    pm = dynamic
    pm.max_children = 5
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    
    2 days ago, some warning appeared in php5-fpm.log
    Code:
    [16-Feb-2014 09:02:11] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
    I trying to tweak my www.conf
    Code:
    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 3
    pm.min_spare_servers = 2
    pm.max_spare_servers = 5
    pm.max_requests = 500
    
    But the the warning is still there:

    Code:
    [17-Feb-2014 09:24:29] WARNING: [pool www] server reached pm.max_children setting (10), consider raising it
    Then I try to change pm.max_children to
    Code:
    pm.max_children = 13
    Still warning...
    Code:
    [18-Feb-2014 15:47:27] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 10 total children
    [18-Feb-2014 15:47:28] 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 12 total children
    [18-Feb-2014 15:47:29] WARNING: [pool www] server reached pm.max_children setting (13), consider raising it
    [18-Feb-2014 15:49:58] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 10 total children
    [18-Feb-2014 15:49:59] 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 12 total children
    [18-Feb-2014 15:50:00] WARNING: [pool www] server reached pm.max_children setting (13), consider raising it
    
    Any suggestion?

    It's a 1GB RAM VPS, running PHP 5.5.9 with xcache 3.1.0. My xenforo forum is the only website in there. 25-15 user active each day, with average 40-50 post each day.
     
  2. HWS

    HWS Well-Known Member

    Raise it until this warning disappears.

    Our settings:
    pm.max_children = 256
    pm.min_spare_servers = 5
    pm.max_spare_servers = 64
    pm.max_requests = 2048
     
  3. Sheratan

    Sheratan Well-Known Member

    Do you have any formula?
     
  4. Null

    Null Well-Known Member

    It would really require more information on your VPS.

    Based on 1GB RAM, try...
    Code:
    pm.max_children = 32
    There's several place where you can optimise settings (PHP, NGINX, etc). Most people stick the default values and don't read up on how to calculate values for the amount of resources available to you.
     
  5. Sheratan

    Sheratan Well-Known Member

    Debian 7 with nginx 1.4.5 + SSL

    Thanks, let me try that.
     
  6. HWS

    HWS Well-Known Member

    I'm sure, we had one. But I don't remember. ;-)

    Our needs are much larger than your's. We run 4 load-balanced dedicated web servers for our forum and each of them uses this php-fpm setting.
     
  7. Mouth

    Mouth Well-Known Member

    Sheratan likes this.
  8. HittingSmoke

    HittingSmoke Active Member

    You should not need 256 max FPM workers for 15-25 users per day. You have a problem that needs addressing. Inflating your server workers to far beyond reasonable limits for your traffic isn't going to solve it.

    Have you actually looked at your FPM process usage? Are you restarting PHP-FPM (not Nginx) after changing your config? Have you read the output of PHPinfo to make sure the settings reported being used by the PHP handler is what's in your config? Are you running analytics software so you can see your actual traffic instead of just XenForo statistics?

    Take these steps:

    Install htop. It's in the Debian repos. Run htop -u followed by your web server user. I think on Debian it's www-data. I'm not sure. I compile my server stack from source so I don't know the package defaults. This will show you all the running processes. Count the PHP-FPM workers and note the "time" field values. That will tell you how long each process has been running.

    Create a phpinfo.php page and post the results from loading it in a browser. It will list every config option recognized by your PHP installation:
    Code:
    <?php
    phpinfo();
    ?>
    
    Run Google Analytics or even better, if you're comfortable setting it up, Piwik Analytics. This will shed light on any traffic hitting your site that isn't from your users. It's possible your site is being targeted by spam bots or something else less sinister that is causing PHP-FPM to believe it needs to ramp up in processes.
     
    jeffwidman and Sheratan like this.
  9. Sheratan

    Sheratan Well-Known Member

    I think I've been under some kind of attack. A spam attack, perhaps. Lot's of guest from static.softlayer and a lot of IP from OVH trying to register to my forum.
     
  10. HittingSmoke

    HittingSmoke Active Member

    Nginx is easy as store-bought pie to block addresses on. Try use the deny config option to filter out the shady traffic you're getting. you can filter SoftLayer wholesale and if any other spam is coming from a predictable range of IPs you can block them with a simple filter as well. This will prevent the connections from ever reaching the PHP handler. If that solves your problem you can implement the same changes at the firewall level which will free up even more resources by preventing them from ever hitting your web server in the first place.
     
  11. Sheratan

    Sheratan Well-Known Member

    Ended up blocking all 5.10.83.xyz range

    Code:
    location / }
    deny 5.10.83.1/32;
                    deny 5.10.83.2/31;
                    deny 5.10.83.4/30;
                    deny 5.10.83.8/29;
                    deny 5.10.83.16/28;
                    deny 5.10.83.32/27;
                    deny 5.10.83.64/26;
                    deny 5.10.83.128/25;
                    allow all;
    .... }
    
     
  12. Sheratan

    Sheratan Well-Known Member

    There are no reached pm.max_children setting anymore, replaced by this:

    Code:
    [24-Feb-2014 00:51:16] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 23 total children
    [24-Feb-2014 00:51:17] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 6 idle, and 31 total children
    [24-Feb-2014 19:17:52] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 7 idle, and 23 total children
    [24-Feb-2014 21:08:55] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 7 idle, and 23 total children
    [26-Feb-2014 22:02:17] NOTICE: [pool www] child 45632 exited with code 0 after 98661.098606 seconds from start
    [26-Feb-2014 22:02:17] NOTICE: [pool www] child 47169 started
    [26-Feb-2014 22:02:25] NOTICE: [pool www] child 45630 exited with code 0 after 98670.043448 seconds from start
    [26-Feb-2014 22:02:25] NOTICE: [pool www] child 47170 started
    [26-Feb-2014 22:04:44] NOTICE: [pool www] child 45631 exited with code 0 after 98809.710953 seconds from start
    [26-Feb-2014 22:04:44] NOTICE: [pool www] child 47171 started
    [27-Feb-2014 10:41:28] NOTICE: [pool www] child 46441 exited with code 0 after 99673.498877 seconds from start
    [27-Feb-2014 10:41:28] NOTICE: [pool www] child 47916 started
    [27-Feb-2014 10:41:35] NOTICE: [pool www] child 46440 exited with code 0 after 99682.877664 seconds from start
    [27-Feb-2014 10:41:35] NOTICE: [pool www] child 47917 started
    [27-Feb-2014 10:41:45] NOTICE: [pool www] child 46442 exited with code 0 after 99680.437769 seconds from start
    [27-Feb-2014 10:41:45] NOTICE: [pool www] child 47918 started
    [27-Feb-2014 10:42:09] NOTICE: [pool www] child 46438 exited with code 0 after 99719.989047 seconds from start
    [27-Feb-2014 10:42:09] NOTICE: [pool www] child 47919 started
    [27-Feb-2014 10:56:40] NOTICE: [pool www] child 46443 exited with code 0 after 100573.755350 seconds from start
    [27-Feb-2014 10:56:40] NOTICE: [pool www] child 47922 started
    [27-Feb-2014 14:50:34] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 23 total children
    [27-Feb-2014 14:50:35] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 4 idle, and 31 total children
    [28-Feb-2014 00:55:14] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 23 total children
    
    www.conf
    Code:
    pm.max_children = 64
    pm.start_servers = 12
    pm.min_spare_servers = 8
    pm.max_spare_servers = 16
    pm.max_requests = 768
    
     
  13. Sheratan

    Sheratan Well-Known Member

    16 PHP-FPM process, with average "time" 15-25 minutes

    The page loaded smooth. What configuration should I notice?

    This is done. It's softlayer bot. :D
     
  14. HittingSmoke

    HittingSmoke Active Member

    Are you sure you're not still getting hammered with spam bots? Also, is that 16 PHP-FPM process count from your peak time? You should have a hell of a lot more than 16 processes running if your max is 64 and your www pool is I/O locked.

    The notices are normal. Those are processes being recycled from pm.max_requests.
     
  15. RoldanLT

    RoldanLT Well-Known Member

    This is insane value :D
     
    Xon and bortrenamo like this.

Share This Page