@CipherC wrote:
Hi devs,
We were planning to upgrade existing haproxy-1.6 to the newest haproxy, but met performance problem with those versions.
Then I tested performance on haproxy-1.6.15 / haproxy-1.7.12 / haproxy-1.8.25 / haproxy-1.9.15 / haproxy-2.0.14 / haproxy-2.1.3,
and turned out that seems haproxy performance has been reduced since haproxy-2.0.14.All these tested have been on same clients/server/nginx machinces, with same haproxy.cfg, and nginx have been tuned to support benchmark rps:9*7k,latencies:4+ms,success ratio:100%.
During those test, nothing except haproxy version is changed.RPS, Latencies, Success ratio haproxy-1.6.15 9*7k 3+ms 100% haproxy-1.7.12 9*7k 3+ms 100% haproxy-1.8.25 9*7k 4+ms 100% haproxy-1.9.15 9*7k 4+ms 100% haproxy-2.0.14 9*6.2k 3+ms 100% # start to reduce. haproxy-2.1.3 9*5.5k 4+ms 100% # worseAre there any special configurations (when building haproxy or in haproxy.cfg etc.) need to be token care to tune 2.0/2.1 to same performance?
More information about environment:
Test command:
# ca related options can be ignored in this case. RATE=7000 DURATION=120 SERVER=3 TIMEOUT=30; echo "GET http://192.168.11.${SERVER}/" | ./vegeta -cpus 4 attack -duration=${DURATION}s -timeout=${TIMEOUT}s -key ca.key -cert ca.crt -rate $RATE -keepalive 1 -insecure | tee results.bin | ./vegeta report | grep -v "^Get "; dateThese versions are downloaded from http://www.haproxy.org/#down, and compile with following command:
make TARGET=linux-glibc CPU=x86_64 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 USE_ZLIB=1 USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_CPU_AFFINITY=1 LUA_LIB_NAME=lua5.3 LUA_INC=/usr/include/lua5.3/Server is a 4C4G Ubuntu 16.04.6 LTS (Xenial Xerus), 4.4.0-142-generic KVM, and the hypernode is completely idle and stable.
haproxy.cfg
root@localhost:~# cat haproxy.cfg global log 127.0.0.1 local0 info maxconn 100000 tune.ssl.default-dh-param 2048 daemon nbproc 4 cpu-map 1 0 stats socket /haproxy/haproxy.1 process 1 cpu-map 2 1 stats socket /haproxy/haproxy.2 process 2 cpu-map 3 2 stats socket /haproxy/haproxy.3 process 3 cpu-map 4 3 stats socket /haproxy/haproxy.4 process 4 defaults log global option dontlognull option redispatch retries 3 maxconn 100000 timeout connect 5s timeout client 50s timeout server 50s timeout tunnel 1h option tcpka # errorfile 400 /etc/haproxy/errors/400.http # errorfile 403 /etc/haproxy/errors/403.http # errorfile 408 /etc/haproxy/errors/408.http # errorfile 500 /etc/haproxy/errors/500.http # errorfile 502 /etc/haproxy/errors/502.http # errorfile 503 /etc/haproxy/errors/503.http # errorfile 504 /etc/haproxy/errors/504.http timeout client-fin 30s listen lbl-noiqom5f bind *:80 mode http option httplog maxconn 400000 timeout client 50s timeout tunnel 3600s default_backend lbl-noiqom5f_default backend lbl-noiqom5f_default mode http option httplog option http-keep-alive balance roundrobin timeout server 50s timeout tunnel 3600s timeout check 5000 server lbb-7pq2k6mm 192.168.11.16:80 check inter 10000 fall 2 rise 5 weight 1 root@localhost:~#
Posts: 1
Participants: 1