apache httpd performance

Ivan Voras ivoras at fer.hr
Sat Apr 21 23:10:57 UTC 2007


Cheffo wrote:

> What else I can change/test to improve performance?

First you'll have to give more info about the hardware on both systems,
and the way you benchmarked them (e.g. did you benchmark over ethernet
or from the same machine?). There are also a bunch of things that may
make apache go faster/slower, for example DNS resolving for the logs,
rewrite rules, etc. - you should test with (as much as they can be)
identical configurations.

On a slow-ish 2 CPU Pentium3 server, over gigabit network (remote
client), I get:

Server Software:        Apache/2.2.3
Server Port:            80

Document Path:          /file.txt
Document Length:        9500 bytes

Concurrency Level:      100
Time taken for tests:   27.300259 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Total transferred:      489226808 bytes
HTML transferred:       475025956 bytes
Requests per second:    1831.48 [#/sec] (mean)
Time per request:       54.601 [ms] (mean)
Time per request:       0.546 [ms] (mean, across all concurrent requests)
Transfer rate:          17500.20 [Kbytes/sec] received

On the same server, ab running locally, I get:

Server Software:        Apache/2.2.3
Server Port:            80

Document Path:          /file.txt
Document Length:        9500 bytes

Concurrency Level:      100
Time taken for tests:   30.8557 seconds
Complete requests:      29194
Failed requests:        6
   (Connect: 6, Length: 0, Exceptions: 0)
Write errors:           0
Total transferred:      286117856 bytes
HTML transferred:       277811424 bytes
Requests per second:    972.86 [#/sec] (mean)
Time per request:       102.790 [ms] (mean)
Time per request:       1.028 [ms] (mean, across all concurrent requests)
Transfer rate:          9311.04 [Kbytes/sec] received

(Yes, this is a different version of apache than yours, but I'm
illustrating a point :) )

Some more data points:

- Remote client, apache, using keepalives:
Requests per second:    2891.61 [#/sec] (mean)
Time per request:       34.583 [ms] (mean)
Time per request:       0.346 [ms] (mean, across all concurrent requests)
Transfer rate:          27729.00 [Kbytes/sec] received

- Remote client, using thttpd instead of apache (keepalives have no
influence here):
Requests per second:    3728.68 [#/sec] (mean)
Time per request:       26.819 [ms] (mean)
Time per request:       0.268 [ms] (mean, across all concurrent requests)
Transfer rate:          35499.92 [Kbytes/sec] received

Regarding this last one: It seems that FreeBSD really benefits from
using 2 CPUs here. thttpd is a single-threaded async server, but the
load on the machine shows cca 10% idle. Thttpd gets ~~45%, swi:net gets
45%, irq20:bge0 gets 20%, syslogd gets 5% and the rest goes where top
can't follow. It looks like ipfw might be one of the limiting factors
here (I use dynamic rules and the log shows ipfw discarding packets that
look valid).


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-performance/attachments/20070421/f2d16783/signature.pgp


More information about the freebsd-performance mailing list