7

I have an Apache 2.4 webserver that runs on a micro instance of AWS with CentOS.
The apache is running PHP with a prefork MPM module.
The server is accessed via an Amazon load balancer which has a health check that tries to access index.php webpage of the server every 60 seconds.

The problem is that after 1-2 days, Apache reaches somehow 256 opened processes with index.php page and gives the following error:

[Sun Sep 08 02:13:00.356051 2013] [mpm_prefork:error] [pid 1201] (12)Cannot allocate memory: AH00159: fork: Unable to fork new process
[Sun Sep 08 02:13:13.656694 2013] [mpm_prefork:error] [pid 1201] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

Usually when this happens, new http connections are not accepted anymore.

Apache probably doesn't close all the connections of the load balancer.
We have another server with Apache 2.2, which doesn't have this problem, so probably the problem is with the 2.4 version which is much different than 2.2 (We didn't change any default configurations of Apache).

mod_status is enabled and here is the output that we could get when this happened once: http://www.speedyshare.com/vE3My/server-status.txt

Does anybody know how can we approach this problem?

Thanks in advance!

6
  • What action did you take after reading that error? Sep 15, 2013 at 1:06
  • It doesn't accept you TCP connections when httpd can't provide more child processes. Checkout the mpm_common, paste out <IfModule prefork.c> stanza and check number of your running httpd processes. you may need adjusting ServerLimit.
    – shawnzhu
    Sep 15, 2013 at 1:12
  • @DrewKhoury, I had to restart apache, I didn't have any other option.
    – Edi
    Sep 15, 2013 at 22:44
  • 1
    @shawnzhu, The problem is not with the connection limit but with the fact that Apache reaches this limit. It should close these connections, but somehow it keeps them open.
    – Edi
    Sep 15, 2013 at 22:45
  • Have you found a solution? I'm experiencing the same problem with the same setup.
    – iuri
    Jan 7, 2015 at 13:56

1 Answer 1

1

I have found apache processes swelling (leaking memory) when they are re-used indefinitely it is worth setting a MaxRequestsPerChild 200 in your httpd.conf and restart.

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.