Le jeudi 28 octobre 2010 15:58:55, Ariel a écrit : > Hi Cyril, > My test wasn't designed to look at higher load averages (many users at > once) since the problem I was looking at was just increased latency for > all requests.
You mean that with only 1 request at a time through haproxy you obtain a response in 150ms where a direct request gives a response in 10 to 30ms ? I agree, this looks really strange. I reproduced nearly the same environment as you described and could not reproduce this latency (only 1 nginx instance in my case). To be clear on the config I used (I didn't took time to have a clean and tuned installation): - 1 server running VirtualBox 3.2.8 OS : Mandriva Cooker (not recently updated) Kernel : Linux localhost 2.6.35.6-server-1mnb #1 SMP ... x86_64 GNU/Linux CPU : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz Memory : 4Gb IP : 192.168.0.128 With 2 small VMs based on a Debian Lenny 5.0.6 : Kernel : 2.6.26-2-amd64 #1 SMP ... x86_64 GNU/Linux - Instance 1 : 1 CPU allocated Memory : 512Mb IP : 192.168.0.23 HAProxy 1.4.8 installed with your configuration (only one backend server pointing to the second VM instance) - Instance 2 : 1 CPU allocated Memory : 384Mb IP : 192.168.0.24 nginx 0.7.65 embedding your ajax test - 1 laptop used as the client OS : Ubuntu 10.10 Kernel : 2.6.35-22-generic #35-Ubuntu SMP ... i686 GNU/Linux Memory : 2Gb TEST 1 : Firefox/Firebug - direct access to nginx via 192.168.0.24 : firebug shows response times about 2ms - access to haproxy via 192.168.0.23 : response times are about 3ms TEST 2 : Chromium/Firebug lite - direct access to nginx via 192.168.0.24 : response times between 10 and 15ms - access to haproxy via 192.168.0.23 : response times still between 10 and 15ms TEST 3 : using ab for 10000 requests with a concurrency of 1 (no keepalive) - via nginx : ab -n10000 -c1 http://192.168.0.24/ajax.txt Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 2 90% 2 95% 2 98% 2 99% 3 100% 16 (longest request) - via haproxy : ab -n10000 -c1 http://192.168.0.23/ajax.txt Percentage of the requests served within a certain time (ms) 50% 3 66% 3 75% 4 80% 4 90% 4 95% 4 98% 5 99% 5 100% 14 (longest request) The results are similar. TEST 4 : using ab for 10000 requests with a concurrency of 10 (no keepalive) - via nginx : ab -n10000 -c10 http://192.168.0.24/ajax.txt Percentage of the requests served within a certain time (ms) 50% 6 66% 6 75% 6 80% 6 90% 7 95% 8 98% 8 99% 9 100% 25 (longest request) - via haproxy : ab -n10000 -c10 http://192.168.0.23/ajax.txt Percentage of the requests served within a certain time (ms) 50% 18 66% 21 75% 23 80% 24 90% 30 95% 35 98% 40 99% 43 100% 56 (longest request) Ok, it starts to be less responsive but this is because the VirtualBox server now uses nearly 100% of its 2 CPU cores. But this is still far from what you observe. TEST 5 : using ab for 10000 requests with a concurrency of 100 (no keepalive) Just to be quite agressive with the VMs. - via nginx : ab -n10000 -c100 http://192.168.0.24/ajax.txt Percentage of the requests served within a certain time (ms) 50% 54 66% 55 75% 57 80% 65 90% 76 95% 78 98% 79 99% 81 100% 268 (longest request) - via haproxy : ab -n10000 -c100 http://192.168.0.23/ajax.txt Percentage of the requests served within a certain time (ms) Percentage of the requests served within a certain time (ms) 50% 171 66% 184 75% 192 80% 198 90% 217 95% 241 98% 287 99% 314 100% 3153 (longest request) I can't help you much more but I hope this results will give you some points of comparison. What is the hardware of your Virtualbox server ? -- Cyril Bonté