httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Evans <tevans...@googlemail.com>
Subject Re: [users@httpd] prefork vs worker mpm in apache
Date Tue, 03 Nov 2015 17:32:28 GMT
On Tue, Nov 3, 2015 at 3:43 PM, Tim Dunphy <bluethundr@gmail.com> wrote:
>
> Hey guys,
>
> We had to recompile apache 2.4.12 because we needed to disable thread safety
> in php (ZTS).  Because for some reason when compiling php with the
> --disable-maintainer-zts with the worker mpm model and checking the php info
> page, it was saying that thread safety was still enabled.

This is unsurprising. If you use a threaded process manager in apache,
you will need thread safety in anything embedded in to apache.

>
> So when we recompiled apache to use the prefetch worker model instead of
> worker, the php info page was showing that  thread safety was disabled.
>
> But after that change apache processes spiked from around 11 processes per
> machine to well over 250 processes at any given time.


*Prefork* will fork one process for each concurrent request you
handle. So if you have ServerLimit 250, and 250 concurrent requests,
you will need enough RAM/CPU to handle 250 processes.

This is why it prefork is avoided, it is very expensive for high volume sites.

>
> These are the tuning settings we have in apache:
>
> StartServers 10
>
> #MinSpareServers 10
>
> #MaxSpareServers 25
>
> ServerLimit 250
>
> MaxRequestWorkers 250
>
> MaxConnectionsPerChild 1000
>
> KeepAlive On
>
> KeepAliveTimeout 30
>
> EnableSendfile Off
>
>
> So I was just wondering how this change could've cause this problem of
> having the number of apache processes spike. And if there are any other
> changes we can make to apache to bring the process count down?

This is all explained in the docs for each of those directives. With
prefork, to handle 250 clients will require 250 processes. With
worker, it will start 25 worker threads per process (ThreadsPerChild),
so to handle 250 clients requires only 10 processes.

I would recommend to detach PHP from Apache, and run them
independently, using fastcgi and PHP-FPM.

Cheers

Tom

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message