[Info-vax] Apache + mod_php performance

Arne Vajhøj arne at vajhoej.dk
Wed Oct 2 14:06:51 EDT 2024


On 10/2/2024 11:32 AM, Arne Vajhøj wrote:
> Summary numbers and analysis.
> 
>                          no db con pool     db con pool
> Apache + CGI               4 req/sec           N/A
> Apache + mod_php (cfg A)  11 req/sec         11 req/sec
> Apache + mod_php (cfg B)  22 req/sec         22 req/sec
> Apache + mod_php (cfg C)  94 req/sec        103 req/sec
> Apache + mod_php (cfg D)  85 req/sec         83 req/sec
> Tomcat + Quercus         208 req/sec        214 req/sec
> Apache + mod_php (win) ~1200 req/sec      ~6000 req/sec
> 
> Note that Windows got more CPU and RAM than VMS, so not really
> comparable. With resources similar to VMS then I would expect
> maybe 1/10'th of througput.
> 
> I have not tested Apache on Linux, but I would expect the numbers
> to be even higher than Windows - it is what is used by most of the web.
> 
> config       KeepAlive   KeepALiveTimeout     MaxSpareServers    MaxClients
>    A             On             15                   10               150
>    B             On             15                   50               300
>    C             Off            N/A                  50               300
>    D             On             1                   300               300
> 
> A is default config
> B is as many resources that my VMS system could support
> C is keep alive disabled
> D is keep alive limited
> 
> Allocating as many resources as one can spare make sense. But it can
> be a lot of resources. Expect memory usage to be MaxClients * 25 MB.
> 
> But for the rest then as usual there are tradeoffs.
> 
> config    browser benefit    browser benefit    througput
>            keep alive         keep alive
>            within page        across pages
>     B          yes                yes               low
>     C          no                 no                acceptable
>     D          yes                no                almost acceptable
> 
> I consider 100 req/sec as acceptable. Good would be 200-300 which
> is what Quercus can do and the exterpolation from:
>      (througput PHP Apache / throughput static Apache) * throughput 
> static OSU
> 
> I suspect that most will find D attractive.

What would be nice to have had was a MaxKeepAliveConnections
config parameter.

KeepAlive=On,MaxClients=300,KeepAliveTimeout=15, 
MaxKeepAliveConnections=150 would work like:
* the first 150 clients get full 15 seconds keep alive
* the last 150 clients would not get keep alive

That would utilize keep alive for everyone at low volume,
but turn off keep alive for some clients at high load
to keep throughput up.

That config parameter does not exist though.

Arne



More information about the Info-vax mailing list