Checking performance with tux/apache, tux, apache

Chris Davies mcd at daviesinc.com
Thu Nov 4 17:25:44 UTC 2004


Linux Kernel 2.4.27-A3
Tux 3.0 userland
Apache 1.3
two machines connected via 100 TX full duplex private LAN on Cisco Cat
2948g-l3.

This weekend while working with Tux on another machine I noticed a very
strange trait.  While it didn't make a lot of sense at the time, I
chalked it up to my wifi network and benchmarks run at home on a 'less
than perfect' setup.  But, something just didn't feel right.

With a site with a standard page, I run ab 10 times in a row with the
same parameters and take the average of the last 5 runs.

ab -n 1000 -c 20 http://url.com/
ab -n 1000 -c 20 http://url.com/?    (to send it to the backend)

Tux consistently performs around 2400 transactions per second
Apache fairly consistently performs around 960 transactions per second
However, Tux handing the request to the backend can barely manage 280
transactions per second.  Apache2-prefork as a backend managed 330 tps
and Apache2-mpm-worker handled about 400 tps.

Conversely, Apache2-prefork handled 1240 tps and Apache2-mpm-worker
handled 1225 tps when acting as the frontend.  Keepalives seemed to make
no real difference in any of the results.  Even -n 10000 -c 50 made
little difference to apache, but Tux actually served even faster.
Passing to the backend with -n 10000 -c 50 really made little difference
compared to the prior results for each run of Apache on the backend.

Granted there should be some overhead to handing the request to the
backend, but that is a considerable performance hit -- its a little more
than 3x slower for any request that needs to be handed to the backend.

I'll redo the testing using Tux 2.6, but cannot deploy with 2.6
currently.  I don't recall there being this much separation before -- I
thought I remmebered a difference of 50-100 transactions per second for
requests handed to the backend.

sysctl.tux

net/tux/virtual_server = 1
net/tux/clientport = 81
net/tux/referer_logging = 1
net/tux/compression = 0
net/tux/logging = 0
net/tux/max_keepalives = 1000
net/tux/keepalive_timeout = 30
net/tux/nonagle = 0
net/tux/TDprintk = 0
net/tux/Dprintk = 0
# these do seem to make it faster
net/tux/generate_cache_control = 1
net/tux/generate_etags = 1
net/tux/generate_last_mod = 0
net/tux/defer_accept = 0





More information about the tux-list mailing list