Hi Willy,

since commit a890d072, the following frontend configuration
(in http mode) hangs haproxy, debug output above.

> acl iscluster1-2       hdr_sub(host) -i testdom2.local
> use_backend     cluster1-2     if iscluster1-2

After process_switching_rules haproxy seems to hang (new
connections don't trigger additional logging). CPU usage
grows to 100% spend in userspace by haproxy:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6974 root      20   0 15444 4720  404 R 99.8  0.5   0:23.57 haproxy



One commit back, 8624cab29, same testcase works fine.


lukas@ubuntuvm:~/haproxy$ ./haproxy -vv
Sharing pendconn with pipe
HA-Proxy version 1.5-dev17-108 2013/04/02
Copyright 2000-2012 Willy Tarreau <w...@1wt.eu>

Build options :
  TARGET  = linux2628
  CPU     = native
  CC      = gcc
  CFLAGS  = -g -O0 -DTCP_FASTOPEN=23
  OPTIONS = USE_ZLIB=1 USE_OPENSSL=1 USE_PCRE=1

Default settings :
  maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200

Encrypted password support via crypt(3): yes
Built with zlib version : 1.2.3.4
Compression algorithms supported : identity, deflate, gzip
Built with OpenSSL version : OpenSSL 1.0.1 14 Mar 2012
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports prefer-server-ciphers : yes

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.

lukas@ubuntuvm:~/haproxy$ sudo ./haproxy -d -f ../cert/haproxy.cfg
Sharing pendconn with pipe
Sharing channel with capture
Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result FAILED
Total: 3 (2 usable), will use epoll.
Using epoll() as the polling mechanism.
00000001:myfrontend.accept(0005)=0007 from [10.0.0.3:60250]
si_conn_wake_cb: si=0x82c4c34, si->state=7 ib->flags=00500000 ob->flags=00000000
[3428207437] process_session:1718: task=0x82b08a0 s=0x82c4a98, sfl=0x00000080, 
rq=0x82b07e0, rp=0x82b06f8, exp(r,w)=0,0 rqf=00500000 rpf=00000000 rqh=0 rqt=0 
rph=0 rpt=0 cs=7 ss=0, cet=0x0 set=0x0 retr=0
[3428207437] http_wait_for_request: session=0x82c4a98 b=0x82b07e0, exp(r,w)=0,0 
bf=00d08000 bh=0 analysers=1c
[3428207437] queuing with exp=3428236437 req->rex=3428236437 req->wex=0 
req->ana_exp=3428237437 rep->rex=0 rep->wex=0, si[0].exp=0, si[1].exp=0, cs=7, 
ss=0
si_conn_wake_cb: si=0x82c4c34, si->state=7 ib->flags=00400002 ob->flags=00000000
[3428207440] process_session:1718: task=0x82b08a0 s=0x82c4a98, sfl=0x00000080, 
rq=0x82b07e0, rp=0x82b06f8, exp(r,w)=0,0 rqf=00000002 rpf=00000000 rqh=147 
rqt=0 rph=0 rpt=0 cs=7 ss=0, cet=0x0 set=0x0 retr=0
[3428207440] http_wait_for_request: session=0x82c4a98 b=0x82b07e0, exp(r,w)=0,0 
bf=00808002 bh=147 analysers=1c
00000001:myfrontend.clireq[0007:ffff]: GET / HTTP/1.1
00000001:myfrontend.clihdr[0007:ffff]: User-Agent: curl/7.21.7 (i386-pc-win32) 
libcurl/7.21.7 OpenSSL/1.0.0d zlib/1.2.5 librtmp/2.3
00000001:myfrontend.clihdr[0007:ffff]: Accept: */*
00000001:myfrontend.clihdr[0007:ffff]: Host: testdom1.local
[3428207440] http_process_req_common: session=0x82c4a98 b=0x82b07e0, 
exp(r,w)=0,0 bf=00808002 bh=147 analysers=10
[3428207440] process_switching_rules: session=0x82c4a98 b=0x82b07e0, 
exp(r,w)=0,0 bf=04808002 bh=147 analysers=00
^Clukas@ubuntuvm:~/haproxy$
lukas@ubuntuvm:~/haproxy$



Regards,

Lukas                                     

Reply via email to