[Info-vax] Apache + mod_php performance

Dan Cross cross at spitfire.i.gajendra.net
Wed Sep 25 08:48:46 EDT 2024


In article <vcvmu1$3cnv1$2 at dont-email.me>,
Arne Vajhøj  <arne at vajhoej.dk> wrote:
>On 9/24/2024 5:09 PM, Dan Cross wrote:
>> In article <vcv0bl$39mnj$1 at dont-email.me>,
>> Arne Vajhøj  <arne at vajhoej.dk> wrote:
>>> I am not impressed by Apache + mod_php performance on VMS.
>>>
>>> The basic numbers I see (simple PHP code for getting some data
>>> out of a MySQL database and displaying) are:
>>>
>>> Apache + CGI : 4 req/sec = 240 req/min
>>> Apache + mod_php : 11 req/sec = 660 req/min
>>> Tomcat + Quercus : 127 req/sec = 7620 req/min
>>>
>>> (VMS x86-64 9.2-2, Apache 2.4-58, Berryman PHP 8.1,
>>> Java 8u372, Tomcat 8.5-89, Quercus 4.0)
>>>
>>> That CGI is slow is no surprise. Using CGI for performance
>>> is like doing 100 meter crawl dressed in medieval armor.
>>>
>>> But I had expected much better numbers for mod_php. Instead
>>> of the actual x2.5 and x10 I had expected like x10 and x2.5
>>> between the three.
>>>
>>> Anyone having any ideas for why it is like this and what
>>> can be done about it?
>> 
>> Did you try running your test script under the PHP interpreter
>> directly, without the web stack?  What kind of QPS numbers do
>> you see if it's just PHP talking to MySQL?
>
>Just executing the same PHP code in a loop give much higher
>performance.
>
>Single process : 158 executions per second = 9480 executions per minute
>
>And multi process could probably get significantly higher.

So this suggests that your PHP code, by itself, is not the
bottleneck, though it remains unclear to me what you mean when
you say, "just executing the same PHP code in a loop...": does
this mean that you're running the PHP interpreter itself in a
loop?  As in, starting it fresh on every iteration?  Or does
this mean that you've got a loop inside the PHP program that
runs your test and you're measuring the throughput of that?  And
is this standalone, or executed under the web framework?  That
is, are you running this under Apache and hitting some query
that then causes the PHP interpreter to repeatedly query the
database?

>> With no further details, I'd wonder if you're not caching
>> connections to the database between queries.
>
>Does not matter.

Surely it does.  If, for whatever reason, you're not holding
onto the connection to the database between queries, but rather,
re-establishing it each time, that will obviously have overhead
that will impact performance.

Or perhaps you're saying this because of some unstated
assumption alluded to in the questions above?

>I just found out that Tomcat+Quercus numbers get even higher
>after some warmup.
>
>                     no db con pool    db con pool
>Apache + CGI              4              N/A
>Apache + mod_php         11               11
>Tomcat + Quercus        208              214

That's nice, but that seems irrelevant to the question of why
PHP under Apache is so slow.

Perhaps a simpler question: what sort of throughput does Apache
on VMS give you if you just hit a simple static resource
repeatedly?

	- Dan C.



More information about the Info-vax mailing list