I can confirm the same results. I believe this has something to do with
ab using HTTP/1.0. Pound closes any non HTTP/1.1 client connections
after servicing them.
On 9/5/2011 7:04 AM, Erik Hensema / HostingXS wrote:
Dear Pound users,
We have made the following setup:
pound -> 2 * nginx caching reverse proxy -> application servers
This seems to work well. However, I've got trouble benchmarking this setup.
I'm trying to use ApacheBench to get some data on the maximum number of
requests per second we can handle.
The first test is a very simple setup: I have created a webserver which serves
static files. The files are requested through the loadbalancer and are cached
by nginx. So, no actual hits are propagated to the webserver, except for the
initial fetch of the static file (a small image, in this case).
When I'm benchmarking with KeepAlive off, everything works as expected:
/usr/sbin/ab2 -r -c 10 -n 2500 http://our.host/top.jpg
Results in a nice 500 hits/sec, which isn't very good, but on our old test
hardware it's not bad either.
When I try to enable http keepalive, pound starts failing badly:
/usr/sbin/ab2 -r -c 10 -k -n 2500 http://our.host/top.jpg
Complete requests: 2500
Failed requests: 1255
(Connect: 0, Receive: 0, Length: 1250, Exceptions: 5)
Write errors: 0
Keep-Alive requests: 1250
So 1250 KeepAlive requests, 1250 fails. Pound logs 1255 hits, and some errors:
Sep 5 12:59:29 proxy1 pound: NULL get_thr_arg
Sep 5 12:59:29 proxy1 pound: (7f367ac87710) error copy server cont:
Connection reset by peer
If I don't use the -r flag on apachebench (Don't exit on socket receive
errors.) the bench doesn't even complete.
Any clue on how to investigate this further?