Hi. I've tried 1.8-RC1 and in my case it ate 100% CPU and didn't work. I found out that this is caused by option httpchk. When I commented this line everything became fine. Some details:
root# haproxy -vv HA-Proxy version 1.8-rc1-901f75c 2017/10/31 Copyright 2000-2017 Willy Tarreau <[email protected]> Build options : TARGET = linux2628 CPU = native CC = gcc CFLAGS = -O2 -march=native -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-unused-label OPTIONS = USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 USE_LIBCRYPT=1 USE_OPENSSL=1 Default settings : maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200 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 : TLSv1.0 TLSv1.1 TLSv1.2 Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND Built with network namespace support. Built without compression support (neither USE_ZLIB nor USE_SLZ are set). Compression algorithms supported : identity("identity") Encrypted password support via crypt(3): yes Built without PCRE or PCRE2 support (using libc's regex instead) 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 : [SPOE] spoe [COMP] compression [TRACE] trace root# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial root# uname -a Linux f2 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:59:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux root# cat ./haproxy.cfg global chroot /var/lib/haproxy user haproxy group haproxy daemon defaults mode http frontend in bind *:80 backend www mode http option httpchk GET /api/check HTTP/1.0\r\nHost:\ www.ru server www 10.3.1.14:80 check inter 1s strace: chroot("/var/lib/haproxy") = 0 chdir("/") = 0 getgroups(0, NULL) = 1 setgroups(0, []) = 0 setgid(122) = 0 setuid(115) = 0 getrlimit(RLIMIT_NOFILE, {rlim_cur=4012, rlim_max=4012}) = 0 pipe([5, 6]) = 0 fcntl(5, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 4, {EPOLLIN|EPOLLRDHUP, {u32=4, u64=4}}) = 0 epoll_wait(3, [], 200, 0) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 7 fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0 connect(7, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.3.1.14")}, 16) = -1 EINPROGRESS (Operation now in progress) epoll_wait(3, [], 200, 0) = 0 recvfrom(7, 0x1fc8f34, 16384, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) connect(7, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.3.1.14")}, 16) = 0 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLRDHUP, {u32=7, u64=7}}) = 0 epoll_wait(3, [], 200, 1000) = 0 epoll_wait(3, [], 200, 0) = 0 getsockopt(7, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 ^C--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} --- strace: Process 20581 detached gdb: (gdb) bt #0 0x000000000046ada1 in pl_cpu_relax () at include/import/atomic-ops.h:25 #1 chk_report_conn_err (check=check@entry=0x13bb7d8, errno_bck=errno_bck@entry=0, expired=1) at src/checks.c:656 #2 0x000000000046ec87 in process_chk_conn (t=0x13b3870) at src/checks.c:2196 #3 process_chk (t=0x13b3870) at src/checks.c:2259 #4 0x00000000004d5336 in process_runnable_tasks () at src/task.c:261 #5 0x00000000004a332f in run_poll_loop () at src/haproxy.c:2261 #6 run_thread_poll_loop (data=data@entry=0x13b3ab0) at src/haproxy.c:2310 #7 0x000000000040ab19 in main (argc=<optimized out>, argv=0x7ffe3282f1d8) at src/haproxy.c:2835

