httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ian Holsman <i...@apache.org>
Subject Re: Apache 2.0 Numbers
Date Mon, 24 Jun 2002 03:52:09 GMT
Hi Rasmus..
I did the same test (without Keepalives) on my machine and found that
for the static HTML page Apache 2.0 was nearly the same.

Script is attached.. basic summary

For Static Files:

version 
5 concurrent	20 concurrent
1.3.26 
	429.39		418.62
2.0.40-d 
430.08 
	409.11

For PHP:
1.3.26 
	431.32		423.79
2.0.40-d 
347.10 
	331.53


The main difference that I can see is that php is using a filter.
i'd say that php's performance would increase to 1.3 numbers when
they write there sapi interface as handler NOT a filter.
until then php's performance will always be worse in 2.0, as they
are using the wrong set of hooks (filters) to communicate with 2.0.

--Ian


* I built apache2 with threads disabled, and did the same for apache2's 
php (after tweaking TSRM.h to let me)

Rasmus Lerdorf wrote:
> Someone asked me for numbers when I mentioned the other day that Apache
> 2-prefork was really not a viable drop-in replacement for Apache 1.3 when
> it comes to running a PHP-enabled server.
> 
> Apache 1.3 is still significantly faster than Apache2-prefork for both
> static and dynamic content.  Now, part of the blame goes to PHP here for
> the dynamic case. We are compiling PHP in threadsafe mode when building
> the PHP DSO for Apache2-prefork which is not necessary. It would be nice
> if there was an apxs flag that would return the MPM type. Right now we
> would need to parse the output of httpd -l or -V to figure out which MPM
> is being used. Being able to go non-threadsafe in PHP does speed us up a
> bit. But none of this has anything to do with the fact that Apache 1.3 is
> faster for static files.  It's going to be very hard to convince people to
> switch to Apache2-prefork if we can't get it to go at least as fast as 1.3
> for simple static files.
> 
> Platform: Linux 2.4.19-pre8, glibc 2.2.5, gcc-2.96, P3-800, 128M
> Tested using ab from the httpd-2.0 tree with these flags: -c 5 -n 50000 -k
> 
> 1024-byte file which looked like this:
> 
> <html>
> <head><title>Test Document.</title>
> <body>
> <h1>Test Document.</h1>
> <p>
> This is a 1024 byte HTML file.<br />
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br />
> cccccccccccccccccccccccccccccc<br />
> dddddddddddddddddddddddddddddd<br />
> eeeeeeeeeeeeeeeeeeeeeeeeeeeeee<br />
> ffffffffffffffffffffffffffffff<br />
> gggggggggggggggggggggggggggggg<br />
> hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh<br />
> iiiiiiiiiiiiiiiiiiiiiiiiiiiiii<br />
> jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj<br />
> kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk<br />
> llllllllllllllllllllllllllllll<br />
> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm<br />
> nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br />
> oooooooooooooooooooooooooooooo<br />
> pppppppppppppppppppppppppppppp<br />
> qqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<br />
> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr<br />
> ssssssssssssssssssssssssssssss<br />
> tttttttttttttttttttttttttttttt<br />
> uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu<br />
> vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv<br />
> wwwwwwwwwwwwwwwwwwwwwwwwwwwwww<br />
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
> </p>
> </body>
> </html>
> 
> The PHP version was:
> 
> <html>
> <head><title>Test Document.</title>
> <body>
> <h1>Test Document.</h1>
> <p>
> <?='This is a 1024 byte HTML file.'?><br />
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br />
> cccccccccccccccccccccccccccccc<br />
> dddddddddddddddddddddddddddddd<br />
> eeeeeeeeeeeeeeeeeeeeeeeeeeeeee<br />
> ffffffffffffffffffffffffffffff<br />
> gggggggggggggggggggggggggggggg<br />
> hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh<br />
> iiiiiiiiiiiiiiiiiiiiiiiiiiiiii<br />
> jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj<br />
> kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk<br />
> llllllllllllllllllllllllllllll<br />
> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm<br />
> nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br />
> oooooooooooooooooooooooooooooo<br />
> pppppppppppppppppppppppppppppp<br />
> qqqqqqqqqqqqqqqqqqqqqqqqqqqqqq<br />
> rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr<br />
> ssssssssssssssssssssssssssssss<br />
> tttttttttttttttttttttttttttttt<br />
> uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu<br />
> vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv<br />
> wwwwwwwwwwwwwwwwwwwwwwwwwwwwww<br />
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
> </p>
> </body>
> </html>
> 
> Note the fact that the Apache2 static test produced the wrong number of
> total bytes.  3072 bytes too many???  Where in the world did they come
> from?  The PHP test on Apache2 produced the correct number as did both
> static and PHP on Apache1.
> 
> 
> Apache 2 PreFork
> ----------------
> KeepAlive On
> MaxKeepAliveRequests 100
> KeepAliveTimeout    15
> StartServers         5
> MinSpareServers      5
> MaxSpareServers     10
> MaxClients          15
> MaxRequestsPerChild  0
> ----------------
> STATIC
> ----------------
> Concurrency Level:      5
> Time taken for tests:   23.793270 seconds
> Complete requests:      50000
> Failed requests:        0
> Write errors:           0
> Keep-Alive requests:    49511
> Total transferred:      66681859 bytes
> HTML transferred:       51203072 bytes <=========== Uh?
> Requests per second:    2101.43 [#/sec] (mean)
> Time per request:       2.379 [ms] (mean)
> Time per request:       0.476 [ms] (mean, across all concurrent requests)
> Transfer rate:          2736.87 [Kbytes/sec] received
> ----------------
> PHP
> ----------------
> Concurrency Level:      5
> Time taken for tests:   125.831896 seconds
> Complete requests:      50000
> Failed requests:        0
> Write errors:           0
> Keep-Alive requests:    0
> Total transferred:      63250000 bytes
> HTML transferred:       51200000 bytes
> Requests per second:    397.36 [#/sec] (mean)
> Time per request:       12.583 [ms] (mean)
> Time per request:       2.517 [ms] (mean, across all concurrent requests)
> Transfer rate:          490.87 [Kbytes/sec] received
> 
> 
> Apache 1.3
> ----------
> Timeout 300
> KeepAlive On
> MaxKeepAliveRequests 100
> KeepAliveTimeout   15
> MinSpareServers     5
> MaxSpareServers    10
> StartServers        5
> MaxClients         15
> MaxRequestsPerChild 0
> -----------
> STATIC
> -----------
> Concurrency Level:      5
> Time taken for tests:   19.735772 seconds
> Complete requests:      50000
> Failed requests:        0
> Write errors:           0
> Keep-Alive requests:    49507
> Total transferred:      66127818 bytes
> HTML transferred:       51200000 bytes
> Requests per second:    2533.47 [#/sec] (mean)
> Time per request:       1.974 [ms] (mean)
> Time per request:       0.395 [ms] (mean, across all concurrent requests)
> Transfer rate:          3272.08 [Kbytes/sec] received
> -----------
> PHP
> -----------
> Concurrency Level:      5
> Time taken for tests:   81.240240 seconds
> Complete requests:      50000
> Failed requests:        0
> Write errors:           0
> Keep-Alive requests:    49508
> Total transferred:      62777865 bytes
> HTML transferred:       51200000 bytes
> Requests per second:    615.46 [#/sec] (mean)
> Time per request:       8.124 [ms] (mean)
> Time per request:       1.625 [ms] (mean, across all concurrent requests)
> Transfer rate:          754.63 [Kbytes/sec] received
> 
> 
> -Rasmus
> 



Mime
View raw message