Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7982607
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T10:43:21+00:00 2026-06-04T10:43:21+00:00

I have a question. I own a 128mb vps with a simple blog that

  • 0

I have a question.
I own a 128mb vps with a simple blog that gets just a hundred hits per day.
I have nginx + php5-fpm installed. Considering the low visits and the ram I decided to set fpm to static with 1 server running. While I was doing my random tests like running php scripts through http that last over 30 minutes I tried to open the blog in the same machine and noticed that the site was basically unreachable. So I went to the configuration and read this:

     The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes to be created when pm is set to 'dynamic'.
; **This value sets the limit on the number of simultaneous requests that will be
; served**

What shocked me the most was that I didn’t know because I always assumed that a php children would handle hundreds of requests at the same time like a http server would do!
Did it get it right?
If for example I launch 2 php-fpm children and launch 2 “long scripts” at the same time all the sites using the same php backend will be unreachable?? How is this usable?
You may think: -duh! a php script (web page) is usually processed in 100ms- … no doubt about that but what happens if you have pages that could run for about 10 secs each and I have 10 visitors with php-fpm with 5 servers so accepting only 5 requests per time at the same time? They’ll all be queued or will experience timeouts?

I’m honestly used to run sites in Windows with Apache and mod_php I never experienced these issues because apparently those limits don’t apply being a different way of using PHP.

This also raises another question. If I have file_1.php with sleep(20) and file_2.php with just an echo, if I run file_1 and then file_2 with the fastcgi machine the second file will request the creation of another server to handle the php request using 4MB RAM more. If I do the same with apache/mod_php the second file will only use 30KB more of RAM (in the apache server). Considering this why is mod_php is considering the “bad guy” if the ram used is actually less…I know I’m missing the big picture here.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T10:43:22+00:00Added an answer on June 4, 2026 at 10:43 am

    You’ve basically got it right. You configured a static number of workers (and that number was “one”) — so that’s exactly what you got.

    But you don’t understand quite how things typically work, since you say:

    I always assumed that a php children would handle hundreds of requests
    at the same time like a http server would do!

    I’m not really familiar with nginx, but consider the typical mod_php setup in apache. If you’re using mod_php, then you’re using the prefork mpm for apache. So every concurrent http requests is handled by a distinct httpd process (no threads). If you’re tuning your apache/mod_php server for low-memory, you’re going to have to tweak apache settings to limit the number of processes it will spawn (in particular, MaxClients).

    Failing to tune this stuff means that when you get a large traffic spike, apache starts spawning a huge number of heavy processes (remember, it’s mod_php, so you have the whole PHP interpreter embedded in each httpd process), and you run out of memory, and then everything starts swapping, and your server starts emitting smoke.

    Tuned properly (meaning: tuned so that you ignore requests instead of allocating memory you don’t have for more processes), clients will time out, but when traffic subsides, things go back to normal.

    Compare that with fpm, and a smarter web server architecture like apache-worker, or nginx. Now you have some, much larger, pool of threads (still configurable!) to handle http requests, and a separate pool of php-fpm processes to handle just the requests that require PHP. It’s basically the same thing, if you don’t set limits on how many processes/threads can be created, you are asking for trouble. But if you do tune, you come out ahead, since only a fraction of your requests use PHP. So essentially, the average amount of memory needed per http requests is lower — thus you can handle more requests with the same amount of memory.

    But setting the number to “1” is too extreme. At “1”, it doesn’t even matter if you choose static or dynamic, since either way you’ll just have one php-fpm process.

    So, to try to give explicit answers to particular questions:

    You may think: -duh! a php script (web page) is usually processed in 100ms- … no doubt about that but what happens if you have pages that could run for about 10 secs each and I have 10 visitors with php-fpm with 5 servers so accepting only 5 requests per time at the same time? They’ll all be queued or will experience timeouts?

    Yes, they’ll all queue, and eventually timeout. The fact that you regularly have scripts that take 10 seconds to run is the real culprit here, though. There are lots of ways to architect around that (caching, work queues, etc), but the right solution depends entirely on what you’re trying to do.

    I’m honestly used to run sites in Windows with Apache and mod_php I never experienced these issues because apparently those limits don’t apply being a different way of using PHP.

    They do apply. You can set up an apache/mod_php server the same way as you have with nginx/php-fpm — just set apache’s MaxClients to 1!

    This also raises another question. If I have file_1.php with sleep(20) and file_2.php with just an echo, if I run file_1 and then file_2 with the fastcgi machine the second file will request the creation of another server to handle the php request using 4MB RAM more. If I do the same with apache/mod_php the second file will only use 30KB more of RAM (in the apache server). Considering this why is mod_php is considering the “bad guy” if the ram used is actually less…I know I’m missing the big picture here.

    Especially on linux, lots of things that report memory usage can be very misleading. But think about it this way: that 30kb is negligible. That’s because most of PHP’s memory was already allocated when some httpd process got started.

    128MB VPS is pretty tight, but should be able to handle more than one php-process.

    If you want to optimize, do something like this:

    For PHP:

    pm = static
    pm.max_children=4
    

    for nginx, figure out how to control processes and thread count (whatever the equivalent to apache’s MaxClients, StartServers, MinSpareServers, MaxSpareServers)

    Then figure out how to generate some realistic load (apachebench, siege, jmeter, etc). use vmstat, free, and top to watch your memory usage. Adjust pm.max_children and the nginx stuff to be as high as possible without causing any significant swap (according to vmstat)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Just a question for my own curiosity. I have heard many times that it's
I just have a question about writing functions in jQuery. When defining your own
I have a (simple) question for my own curiosity: I'd like to find out
Question fellow programmers. Let's say I have a stand alone application in it's own
I have Question and QuestionTypes. In Question table there is a foreign key that
I new in database design. I have a question with my own few solution,
Edit: Answered my own question. See below. -_- I have a variable defined in
I have a question that may have been answered over 9000 times before but
I have a question, which I can't seem to decide on my own so
RESOLVED P.S.Because I don't have enough reputation to answer my own question right now

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.