On 18 Nov 12:33, Maciej Zdeb wrote: > Hi again, > > So "# some headers manipulation, nothing different then on other clusters" > was the important factor in config. Under this comment I've hidden from you > one of our LUA scripts that is doing header manipulation like deleting all > headers from request when its name begins with "abc*". We're doing it on > all HAProxy servers, but only here it has such a big impact on the CPU, > because of huge RPS. > > If I understand correctly: > with nbproc = 20, lua interpreter worked on every process > with nbproc=1, nbthread=20, lua interpreter works on single process/thread > > I suspect that running lua on multiple threads is not a trivial task...
If you can share your lua script maybe we can see if this is doable more natively in haproxy > > > > > wt., 17 lis 2020 o 15:50 Maciej Zdeb <[email protected]> napisał(a): > > > Hi, > > > > We're in a process of migration from HAProxy[2.2.5] working on multiple > > processes to multiple threads. Additional motivation came from the > > announcement that the "nbproc" directive was marked as deprecated and will > > be killed in 2.5. > > > > Mostly the migration went smoothly but on one of our clusters the CPU > > usage went so high that we were forced to rollback to nbproc. There is > > nothing unusual in the config, but the traffic on this particular cluster > > is quite unusual. > > > > With nbproc set to 20 CPU idle drops at most to 70%, with nbthread = 20 > > after a couple of minutes at idle 50% it drops to 0%. HAProxy > > processes/threads are working on dedicated/isolated CPU cores. > > > > [image: image.png] > > > > I mentioned that traffic is quite unusual, because most of it are http > > requests with some payload in headers and very very small responses (like > > 200 OK). On multi-proc setup HAProxy handles about 20 to 30k of connections > > (on frontend and backend) and about 10-20k of http requests. Incoming > > traffic is just about 100-200Mbit/s and outgoing 40-100Mbit/s from frontend > > perspective. > > > > Did someone experience similar behavior of HAProxy? I'll try to collect > > more data and generate similar traffic with sample config to show a > > difference in performance between nbproc and nbthread. > > > > I'll greatly appreciate any hints on what I should focus. :) > > > > Current config is close to: > > frontend front > > mode http > > option http-keep-alive > > http-request add-header X-Forwarded-For %[src] > > > > # some headers manipulation, nothing different then on other clusters > > > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 1 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 2 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 3 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 4 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 5 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 6 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 7 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 8 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process 9 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 10 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 11 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 12 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 13 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 14 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 15 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 16 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 17 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 18 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 19 > > bind x.x.x.x:443 ssl crt /etc/cert/a.pem.pem alpn h2,http/1.1 process > > 20 > > default_backend back > > > > backend back > > option http-keep-alive > > mode http > > http-reuse always > > option httpchk GET /health HTTP/1.0\r\nHost:\ example.com > > http-check expect string OK > > > > server slot_0_checker 10.x.x.x:31180 check weight 54 > > server slot_1_checker 10.x.x.x:31146 check weight 33 > > server slot_2_checker 10.x.x.x:31313 check weight 55 > > server slot_3_checker 10.x.x.x:31281 check weight 33 disabled > > server slot_4_checker 10.x.x.x:31717 check weight 55 > > server slot_5_checker 10.x.x.x:31031 check weight 76 > > server slot_6_checker 10.x.x.x:31124 check weight 50 > > server slot_7_checker 10.x.x.x:31353 check weight 48 > > server slot_8_checker 10.x.x.x:31839 check weight 33 > > server slot_9_checker 10.x.x.x:31854 check weight 44 > > server slot_10_checker 10.x.x.x:31794 check weight 60 disabled > > server slot_11_checker 10.x.x.x:31561 check weight 56 > > server slot_12_checker 10.x.x.x:31814 check weight 57 > > server slot_13_checker 10.x.x.x:31535 check weight 44 disabled > > server slot_14_checker 10.x.x.x:31829 check weight 43 disabled > > server slot_15_checker 10.x.x.x:31655 check weight 40 disabled > > -- (o- Julien Pivotto //\ Open-Source Consultant V_/_ Inuits - https://www.inuits.eu
signature.asc
Description: PGP signature

