On my Apache 2.4.2 server with a standard mod_php Prefork setup these are my server-status results

Current Time: Wednesday, 24-Oct-2012 19:36:24 CDT
Restart Time: Wednesday, 24-Oct-2012 01:27:30 CDT
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 18 hours 8 minutes 54 seconds
Total accesses: 14304233 - Total Traffic: 342.3 GB
CPU Usage: u12584.6 s721.93 cu.66 cs3.43 - 20.4% CPU load
219 requests/sec - 5.4 MB/second - 25.1 kB/request
507 requests currently being processed, 355 idle workers

When I switch to a PHP-FPM setup with the Event MPM with no other variables changes, my requests/sec plummet and overall apache response is garbage.

Current Time: Wednesday, 24-Oct-2012 19:51:21 CDT
Restart Time: Wednesday, 24-Oct-2012 19:48:03 CDT
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 3 minutes 18 seconds
Total accesses: 18720 - Total Traffic: 307.1 MB
CPU Usage: u16.57 s4.74 cu0 cs0 - 10.8% CPU load
94.5 requests/sec - 1.6 MB/second - 16.8 kB/request
15 requests currently being processed, 49 idle workers
PID Connections Threads Async connections
total   accepting   busy    idle    writing keep-alive  closing
11701   114 no  10  22  0   66  38
11702   134 no  5   27  0   81  48
Sum 248     15  49  0   147 86

Is there any obvious reason anyone could think of why this would be the case. I can provide any other additional stats or server setup info to help out. Ive tried tweaking everything up and down and nothing really helps get the PHP-FPM setup anywhere near a baseic prefork/mod-php setup.


2 Answers 2


When you say no other variable changes, do you mean you're using the same httpd.conf values as prefork? If so, yes, that would explain your results.

You need to set MaxRequestsPerChild and MaxConnectionsPerChild differently.

MaxRequestsPerChild has been renamed to MaxConnectionsPerChild, describes more accurately what it does. The old name is still supported.

MaxClients has been renamed to MaxRequestWorkers, which describes more accurately what it does. For async MPMs, like event, the maximum number of clients is not equivalent than the number of worker threads. The old name is still supported.

see: http://httpd.apache.org/docs/2.4/mod/mpm_common.html


Try this:

<IfModule event.c>
ServerLimit           64
MaxClients           4096
StartServers           4
ThreadsPerChild       64
# Same as ThreadsPerChild:
ThreadLimit           64

It allows for 4k simultaneous SSL requests with event MPM

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.