Hi,
I've prepared a simple testcase:
haproxy-moreperformant.cfg:
global
nbproc 40
user haproxy
group haproxy
maxconn 175000
defaults
timeout client 300s
timeout server 300s
timeout queue 60s
timeout connect 7s
timeout http-request 10s
maxconn 175000
bind-process 1
frontend haproxy_test
#bind-process 1-40
bind :12345 process 1
mode http
default_backend backend_test
backend backend_test
mode http
errorfile 503 /etc/haproxy/test.error
# vim: set syntax=haproxy:
haproxy-lessperformant.cfg:
global
nbproc 40
user haproxy
group haproxy
maxconn 175000
defaults
timeout client 300s
timeout server 300s
timeout queue 60s
timeout connect 7s
timeout http-request 10s
maxconn 175000
bind-process 1
frontend haproxy_test
bind-process 1-40
bind :12345 process 1
mode http
default_backend backend_test
backend backend_test
mode http
errorfile 503 /etc/haproxy/test.error
# vim: set syntax=haproxy:
/etc/haproxy/test.error:
HTTP/1.0 200
Cache-Control: no-cache
Content-Type: text/plain
Test123456
The test:
ab -n 5000 -c 250 http://xx.xx.xx.xx:12345
With the first config I get around ~30-33k requests/s on my test system,
with the second conf (only the bind-process in the frontend section has
been changed!) I just get around 26-28k requests per second.
I could get similar differences when playing with nbproc 1 and >1 as
well as the default "bind-process" and/or the "process 1" on the actual
bind.
Is it really just the multi process overhead causing the performance
drop here, even tough the bind uses the first / only one process anyway?
--
Regards,
Christian Ruppert