apache httpd performance

Stefan Lambrev cheffo at FreeBSD-BG.org
Sun Apr 22 16:09:00 UTC 2007


Hi,

Ivan Voras wrote:
> 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.
>   
I'm using my laptop to run ab in both test, and 2 totally different 
servers :)
That's why I do not pretend that the benchmark is done the right way.

The linux host is with pentium 4 single core processor,
The freebsd host is amd64 athlon 3200+ (2GHz) - single core too

Both servers share same dns server(s), so I do not think that the DNS 
can be issue.

I'm using 3com network card - 100mbps - xl.

I'll test with accf_http and will report back. If there is a problem (as 
I'm still not sure that there is) I'll make more accurate benchmark
and will try to find where is the problem (with your help) :)
> 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).
>
>
>   
Can you make this test with default /manual/ alias instead of file.txt, 
so we can compare results ?


More information about the freebsd-performance mailing list