Preliminary Apache 2 benchmarks
| From: | Ilia A. | Date: | Tue, 25 Mar 2003 15:52:28 +0000 |
| Subject: | Preliminary Apache 2 benchmarks | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-272@lists.php.net to get a copy of this message | ||
Based on bug #22815, which talks about unsatisfactory performance of the
apache 2 sapi, I've decided to conduct several benchmarks to determine the
depth of the problem.
Based on my tests (ran using 4.3.2-cvs on 1Ghz celeron) it appears that the
apache2handler is indeed slower.
The test script used was
<?php
for ($i=0; $i<100;$i++) {
echo $i;
}
?>
This script resulted in a 270 byte header being generated in addition to 190
bytes of actual content.
Apache 2 filter (the original apache 2 sapi) was able to handle 143
requests/second, while Apache2handler (newer & more stable sapi) could handle
only 133 requests/second. This represents aproximately 7% performance loss
for rather small request.
My next test was an attempt to determine the performance difference for larger
requests that one may encounter in real life situations.
Test script #2
<?php
$str = str_repeat('a', 4096);
for ($i=0; $i<8; $i++) {
echo $str;
}
?>
With Apache 2 filter I was able to send between 150-167 requests per second,
each request comprising of header 270 bytes and content 32768 bytes, with a
Net I/O: 4895.8 KB/s. The increase in perfromance can be explained by a
significantly lower number of calls to the output function and tunning the
output to benefit the most from output buffering.
Same test with Apache 2 handler resulted in:
Request rate: 132.0 req/s (7.6 ms/req)
Reply rate [replies/s]: min 117.4 avg 132.0 max 152.3
Net I/O: 3915.6 KB/s
CPU time [s]: user 7.63 system 38.92 (user 10.1% system 51.4% total 61.5%)
All tests were conducated 10 times a piece and a total of 10000 requests were
sent during each test instance.
Ilia