Hi all,
> De: [email protected]
> À: [email protected]
> Envoyé: Mercredi 29 Mars 2017 11:52:10
> Objet: 100% cpu usage with compression in haproxy.cfg
>
> i have upgraded to haproxy 1.7.4
>
> when i add the compression algo & type configs in frontend, haproxy
> raises up to 100%.
> this happens also with 1.7.1.
> when i comment those two lines out, everything is working like a
> charm, even compression is working. so i expect i don't need this
> config option at all - only when i want to disable or set some
> differenzt algo/compression options....
I've just hit the issue today on a"public lab" server and haproxy 1.8-dev
(1.8-dev0-827385-303).
I have a connection eating the CPU for more than 8h. Here is the session dump :
0x387d9f0: [29/Mar/2017:04:12:42.844109] id=16025 proto=tcpv4
source=XXX.XXX.XXX.XXX:61913
flags=0x4ce, conn_retries=3, srv_conn=0x37e1e10, pend_pos=(nil)
frontend=http (id=2 mode=http), listener=http (id=1) addr=192.168.0.2:4080
backend=intense-nocache (id=5 mode=http) addr=127.0.0.1:38462
server=www (id=1) addr=127.0.0.1:80
task=0x387d970 (state=0x20 nice=0 calls=-1372075361 exp=<NEVER>, running
age=8h12m)
txn=0x387cbc0 flags=0x18700800 meth=1 status=200 req.st=MSG_DONE
rsp.st=MSG_BODY waiting=0
si[0]=0x387dc28 (state=EST flags=0x0c endp0=CONN:0x3870900 exp=<NEVER>,
et=0x000)
si[1]=0x387dc50 (state=EST flags=0x11c endp1=CONN:0x3876a30 exp=<NEVER>,
et=0x000)
co0=0x3870900 ctrl=tcpv4 xprt=RAW data=STRM target=LISTENER:0xcb5530
flags=0x00203300 fd=1 fd.state=22 fd.cache=0 updt=0
co1=0x3876a30 ctrl=tcpv4 xprt=RAW data=STRM target=SERVER:0x37e1e10
flags=0x00203300 fd=3 fd.state=22 fd.cache=0 updt=0
req=0x387da00 (f=0x29840000 an=0x28000 pipe=0 tofwd=0 total=282)
an_exp=<NEVER> rex=<NEVER> wex=<NEVER>
buf=0x729c60 data=0x729c74 o=0 p=0 req.next=0 i=0 size=0
res=0x387da40 (f=0x80008000 an=0x8000000 pipe=0 tofwd=0 total=15376)
an_exp=<NEVER> rex=<NEVER> wex=<NEVER>
buf=0x3884df0 data=0x3884e04 o=0 p=0 rsp.next=539 i=15360 size=16384
>
> frontend www
> bind 46.16.74.36:80
> capture request header Host len 32
> capture request header User-Agent len 64
>
> # ?? 100% CPU
> compression algo gzip
> compression type text/html text/plain text/javascript
> application/javascript application/xml...
>
> this is haproxy -vv
>
> HA-Proxy version 1.7.4 2017/03/27
> Copyright 2000-2017 Willy Tarreau <[email protected]>
>
> Build options :
> TARGET = linux2628
> CPU = generic
> CC = gcc
> CFLAGS = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement
> OPTIONS = USE_ZLIB=1 USE_OPENSSL=yes USE_PCRE=yes
>
> Default settings :
> maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents =
> 200
>
> Encrypted password support via crypt(3): yes
> Built with zlib version : 1.2.3.4
> Running on zlib version : 1.2.8
> Compression algorithms supported : identity("identity"),
> deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
> Built with OpenSSL version : OpenSSL 1.0.2g 1 Mar 2016
> Running on OpenSSL version : OpenSSL 1.0.2g 1 Mar 2016
> OpenSSL library supports TLS extensions : yes
> OpenSSL library supports SNI : yes
> OpenSSL library supports prefer-server-ciphers : yes
> Built with PCRE version : 8.12 2011-01-15
> Running on PCRE version : 8.38 2015-11-23
> PCRE library supports JIT : no (USE_PCRE_JIT not set)
> Built without Lua support
> Built with transparent proxy support using: IP_TRANSPARENT
> IPV6_TRANSPARENT IP_FREEBIND
>
> Available polling systems :
> epoll : pref=300, test result OK
> poll : pref=200, test result OK
> select : pref=150, test result OK
> Total: 3 (3 usable), will use epoll.
>
> Available filters :
> [COMP] compression
> [TRACE] trace
> [SPOE] spoe
>
>