On Mon, Mar 26, 2018 at 11:03:42AM +0200, Christopher Faulet wrote:

> Le 26/03/2018 à 03:10, Slawa Olhovchenkov a écrit :
> > I am try to use multithreading w/ haproxy 1.8.5 (on FreeBSD
> > 11-stable) and see high and saw-tooth CPU consume.
> > 
> > I am use next config:
> > 
> > global
> >          nbproc 1
> >          nbthread 2
> >          cpu-map auto:1/1-2 0-1
> > 
> > I am use for comprassion haproxy 1.7.10 w/ next config:
> > 
> > global
> >         nbproc 2
> >         cpu-map all 0-1
> >         stats bind-process 1
> > 
> > CPU graph https://postimg.org/image/h0wq9u99j/
> > haproxy 1.7.10 change to 1.8.5 at 3:15
> > 
> > Can I resolve this? Or collect some debug for address issuse?
> > 
> > # haproxy -vv
> > HA-Proxy version 1.8.5 2018/03/23
> > Copyright 2000-2018 Willy Tarreau <[email protected]>
> > 
> > Build options :
> >    TARGET  = freebsd
> >    CPU     = generic
> >    CC      = cc
> >    CFLAGS  = -O2 -pipe -fstack-protector -fno-strict-aliasing 
> > -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv 
> > -fno-strict-overflow -Wno-address-of-packed-member -Wno-null-dereference 
> > -Wno-unused-label -DFREEBSD_PORTS
> >    OPTIONS = USE_GETADDRINFO=1 USE_ZLIB=1 USE_CPU_AFFINITY=1 USE_ACCEPT4=1 
> > USE_REGPARM=1 USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1 USE_PCRE_JIT=1
> > 
> > Default settings :
> >    maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
> > 
> > Built with network namespace support.
> > Built with zlib version : 1.2.11
> > Running on zlib version : 1.2.8
> > Compression algorithms supported : identity("identity"), 
> > deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
> > Built with PCRE version : 8.40 2017-01-11
> > Running on PCRE version : 8.40 2017-01-11
> > PCRE library supports JIT : yes
> > Built with multi-threading support.
> > Encrypted password support via crypt(3): yes
> > Built with transparent proxy support using: IP_BINDANY IPV6_BINDANY
> > Built with Lua version : Lua 5.3.4
> > Built with OpenSSL version : OpenSSL 1.0.2k-freebsd  26 Jan 2017
> > Running on OpenSSL version : OpenSSL 1.0.2j-freebsd  26 Sep 2016
> > OpenSSL library supports TLS extensions : yes
> > OpenSSL library supports SNI : yes
> > OpenSSL library supports : SSLv3 TLSv1.0 TLSv1.1 TLSv1.2
> > 
> > Available polling systems :
> >       kqueue : pref=300,  test result OK
> >         poll : pref=200,  test result OK
> >       select : pref=150,  test result OK
> > Total: 3 (3 usable), will use kqueue.
> > 
> > Available filters :
> >          [TRACE] trace
> >          [COMP] compression
> >          [SPOE] spoe
> > 
> 
> Hi,


> Could you check with your previous configuration (nbproc 2 and no 
> nbthread parameter) ? It could help to know if it is a threads related 
> problem or not.
> 
> Then, try to disable kqueue (nokqueue option in global section or the 
> command-line argument "-dk"), just for the test.

1. disable kqueue. CPU consume less (from currently 100% per core to
80% per core). Shrink user part, system about same.

2. nbproc 2

global
        nokqueue
        nbproc 2
        cpu-map auto:1/1-2 0-1
        stats bind-process 1

Totaly trashed

3. nbproc 2 + kqueue -- same as 2)

https://postimg.org/image/4ple6ujfr/

12:21 (1)
12:28 (2)
12:31 (3)

1.7.10 work good. This is regression in 1.8

> Beside that, I guess there is some traffic passing though your HAProxy 
> when the problem appears. Is there any way to test if the CPU back down 
> when you stop the traffic ?

No, this is production.

Reply via email to