I hope I am not saying something stupid (haven't met `ab` before), but 
wouldn't non-2xx responses mean HTTP errors? In that case you have the same 
amount of errors (actually, a bit more???) than requests sent. You should fix 
those first before running any tests.

Also, as Hank said, you should probably run ab for more than just a few 
seconds.

Anze


On Thursday 07 October 2010, Les Stroud wrote:
> My goal in this testing was to produce a report for management showing how
> haproxy with the four tomcats increased capacity and improved scale vs
> having direct access to tomcat.  I would think it would be pretty straight
> forward to produce that graph.  Unfortunately, the results that I received
> did not line up.  So, I figure that I have a misconfiguration of some
> sort.  Here are the details;
> 
> So, I have 3 scenarios:
> 
> Scenario 1:
>                                                           /———>tomcat1
>                                            /———> machine 3 —
>                                           /                 \———>tomcat2
> ab on machine1 ——> haproxy on machine 2 ——
>                                           \                 /———->tomcat3
>                                            \———> machine 4 —
>                                                             \———>tomcat4
> 
> 
> Scenario 2:
>                                               /———>tomcat1
>                                /———> machine 3 —
>                               /                 \———>tomcat2
> ab and haproxy on machine 2 ——
>                               \                 /———->tomcat3
>                                \———> machine 4 —
>                                                 \———>tomcat4
> 
> 
> Scenario 3:
>                                /———>tomcat1
> ab and haproxy on machine 3 ——
>                                \———>tomcat2
> 
> 
> For all of the scenarios, each box is a vm with 4 procs, 12 Gb of RAM, and
> fiber channel io.  They are all using the latest drivers from vmware and
> are patched up redhat EL 5.5 (latest).  Here is the uname string:
> 2.6.18-194.17.1.el5 #1 SMP Mon Sep 20 07:12:06 EDT 2010 x86_64 x86_64
> x86_64 GNU/Linux
> 
> In all cases I tested by running the following test:
>       ab -n 10000 -c 100 http://tomcat1:8080/examples/jsp/
>         ab -n 10000 -c 100 http://haproxy:81/examples/jsp/
> 
> I also ran these tests at various levels of concurrency (actually ran them
> at powers of 2) and received the same results.
> 
> Here is an example of the results that I receive:
> 
> Scenario 1:
> 
> ab -n 10000 -c 100 http://tomcat1:8080/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   1.602049 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10001
> Total transferred:      1630163 bytes
> HTML transferred:       0 bytes
> Requests per second:    6242.01 [#/sec] (mean)
> Time per request:       16.020 [ms] (mean)
> Time per request:       0.160 [ms] (mean, across all concurrent requests)
> Transfer rate:          993.10 [Kbytes/sec] received
> 
> ab -n 10000 -c 100 http://haproxy:81/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   1.821838 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10000
> Total transferred:      1930000 bytes
> HTML transferred:       0 bytes
> Requests per second:    5488.96 [#/sec] (mean)
> Time per request:       18.218 [ms] (mean)
> Time per request:       0.182 [ms] (mean, across all concurrent requests)
> Transfer rate:          1034.12 [Kbytes/sec] received
> 
> 
> Scenario 2:
> 
> ab -n 10000 -c 100 http://tomcat1:8080/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   1.558019 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10002
> Total transferred:      1630326 bytes
> HTML transferred:       0 bytes
> Requests per second:    6418.41 [#/sec] (mean)
> Time per request:       15.580 [ms] (mean)
> Time per request:       0.156 [ms] (mean, across all concurrent requests)
> Transfer rate:          1021.81 [Kbytes/sec] received
> 
> ab -n 10000 -c 100 http://haproxy:81/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   1.915394 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10012
> Total transferred:      1932316 bytes
> HTML transferred:       0 bytes
> Requests per second:    5220.86 [#/sec] (mean)
> Time per request:       19.154 [ms] (mean)
> Time per request:       0.192 [ms] (mean, across all concurrent requests)
> Transfer rate:          985.18 [Kbytes/sec] received
> 
> Scenario 3:
> 
> ab -n 10000 -c 100 http://tomcat1:8080/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   1.765041 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10010
> Total transferred:      1631630 bytes
> HTML transferred:       0 bytes
> Requests per second:    5665.59 [#/sec] (mean)
> Time per request:       17.650 [ms] (mean)
> Time per request:       0.177 [ms] (mean, across all concurrent requests)
> Transfer rate:          902.53 [Kbytes/sec] received
> 
> ab -n 10000 -c 100 http://haproxy:81/examples/jsp/
> Concurrency Level:      100
> Time taken for tests:   2.978128 seconds
> Complete requests:      10000
> Failed requests:        0
> Write errors:           0
> Non-2xx responses:      10023
> Total transferred:      1934439 bytes
> HTML transferred:       0 bytes
> Requests per second:    3357.81 [#/sec] (mean)
> Time per request:       29.781 [ms] (mean)
> Time per request:       0.298 [ms] (mean, across all concurrent requests)
> Transfer rate:          634.29 [Kbytes/sec] received
> 
> I appreciate any insights you can provide — or even just ideas :)
> 
> LES
> 
> On Oct 7, 2010, at 12:18 AM, Hank A. Paulson wrote:
> > What did the haproxy stats web page show during the test?
> > How long was each test run? many people seem to run ab for a few seconds.
> > Was tomcat "doing" anything for the test urls, I am a bit shocked you got
> > 3700 rps from tomcat. Most apps I have seen on it fail at much lower
> > rps.
> > 
> > Raise the max conn for each server and for the front end and see if you
> > get better results.
> > 
> > On 10/6/10 7:11 PM, Les Stroud wrote:
> >> I did a little more digging and found several blogs that suggest that I
> >> will take a performance hit on virtual platforms. In fact, this guy
> >> (http://www.mail-archive.com/[email protected]/msg03119.html) seems
> >> to have the same problem. The part that is concerning me is not the
> >> overall performance, but that I am getting worse performance with 4
> >> servers than I am with 1 server. I realize there are a lot of
> >> complications, but I have to be doing something very wrong to get a
> >> decrease.
> >> 
> >> I have even tried putting haproxy on the same server with 2 tomcat
> >> servers and used 127.0.0.1 to take as much of the network out as
> >> possible. I still get a lower number of requests per second when going
> >> through haproxy to the 2 tomcats (as opposed to going directly to one
> >> of the tomcats). This test is using ab locally on the same machine.
> >> 
> >> I have tried all of the sysctl settings that I have found listed on the
> >> board. Is there anything I am missing??
> >> 
> >> I appreciate the help,
> >> Les Stroud
> >> 
> >> On Oct 6, 2010, at 3:56 PM, Les Stroud wrote:
> >>> I’ve figured I would find answers to this in the archive, but have been
> >>> unable to. So, I appreciate the time.
> >>> 
> >>> I am setting up an haproxy instance in front of some tomcat instances.
> >>> As a test, I ran ab against one of the tomcat instances directly with
> >>> an increasing number of concurrent connections. I then repeated the
> >>> same test with haproxy fronting 4 tomcat servers. I was hoping to see
> >>> that the haproxy setup would perform a higher number of requests per
> >>> second and hold that higher number with increasingly high traffic.
> >>> Unfortunately, it did not.
> >>> 
> >>> Hitting the tomcat servers directly, I was able to get in excess of
> >>> 3700 rqs/s. With haproxy in front of that tomcat instance and three
> >>> others (using roundrobin), I never surpassed 2500. I also did not find
> >>> that I was able to handle an increased amount of concurrency (both
> >>> started giving errors around 20000).
> >>> 
> >>> I have tuned the tcp params on the linux side per the suggestions I
> >>> have seen on here. Are there any other places I can start to figure
> >>> out what I have wrong in my configuration??
> >>> 
> >>> Thanx,
> >>> LES
> >>> 
> >>> 
> >>> ———
> >>> 
> >>> haproxy.cfg
> >>> 
> >>> global
> >>> #log loghost local0 info
> >>> maxconn 500
> >>> nbproc 4
> >>> stats socket /tmp/haproxy.sock level admin
> >>> defaults
> >>> log global
> >>> clitimeout 60000
> >>> srvtimeout 30000
> >>> contimeout 4000
> >>> retries 3
> >>> option redispatch
> >>> option httpclose
> >>> option abortonclose
> >>> 
> >>> listen stats 192.168.60.158:8081
> >>> mode http
> >>> stats uri /stat #Comment this if you need to specify diff stat path for
> >>> viewing stat page
> >>> stats enable
> >>> listen erp_cluster_https 0.0.0.0:81
> >>> mode http
> >>> balance roundrobin
> >>> option forwardfor except 0.0.0.0
> >>> reqadd X-Forwarded-Proto:\ https
> >>> cookie SERVERID insert indirect
> >>> server tomcat01-instance1 192.168.60.156:8080 cookie A check
> >>> server tomcat01-instance2 192.168.60.156:18080 cookie A check
> >>> server tomcat02-instance1 192.168.60.157:8080 cookie A check
> >>> server tomcat02-instance2 192.168.60.157:18080 cookie A check


Reply via email to