I appear to have resolved this by using only http-server-close and httpclose in my config. Can anyone chime in and confirm that it would resolve this type of issue? I don't quite understand from the docs.

On 2/2/2012 1:32 PM, Baptiste wrote:
Hi,

You should setup net.ipv4.ip_local_port_range as well to increase
allowed opened ports to servers.
Your maxconns seems too high, but I doubt this is the source of your issue.

cheers

On Thu, Feb 2, 2012 at 10:16 PM, Ivan Ator<ivanat...@gmail.com>  wrote:
Hello. I'm having an issue with connections to haproxy hanging upon the
connect stage. My setup is 2 nginx/php-fpm backends with haproxy load
balancing them (3 servers total). When connecting directly to the app
servers everything is great, but through haproxy my browser hangs at
"connecting" for 1-30 seconds sometimes.. or just never connects requiring a
hard refresh.

Sysctl and haproxy settings on the load balancer are:

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_fin_timeout = 20
net.ipv4.ip_local_port_range = 2000    64000
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

kernel.shmmax = 4294967296
fs.file-max = 1048576

net.core.netdev_max_backlog = 100000
net.core.somaxconn = 100000

net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 1048576 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_wmem = 4096 1048576 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.core.optmem_max = 40960

------------

global
        log 127.0.0.1 local0
        user haproxy
        group haproxy
        daemon
        maxconn 100000
#        stats socket /opt/haproxy/etc/sock.haproxy uid 0 gid 0 mode 700
level admin

defaults
        log global
        option dontlognull
        balance leastconn
        retries 3
        option redispatch
        timeout connect 20000ms
        timeout server 30000ms
        timeout client 20000ms

listen stats hidden:47880
        mode http
        stats enable
        stats uri /stats
        stats realm HAProxy\ Statistics
        stats auth hidden

listen www A.B.C.D:80
        mode http
        option httpclose
        option nolinger
        timeout client 20000ms

        option httpchk HEAD / HTTP/1.0
        option forwardfor

        cookie SERVERID insert

        balance leastconn
        maxconn 50000

        server app1 10.240.0.2:80 cookie a1 maxconn 25000 check
        server app2 10.240.0.3:80 cookie a2 maxconn 25000 check
        #server app3 10.240.0.4:80 cookie a3 maxconn 15000 check backup

tcpdump output when this happens: http://pastebin.com/cXE8kWew (note the 8
second "hang")

20:46:11.923871 IP MY-CLIENT.55494>  MY-SERVER.www: Flags [P.], seq
706215489:706216213, ack 3030317681, win 4280, length 724
20:46:12.118792 IP MY-CLIENT.55494>  MY-SERVER.www: Flags [.], ack 2635, win
4280, length 0
20:46:12.303468 IP MY-CLIENT.55494>  MY-SERVER.www: Flags [.], ack 5269, win
4280, length 0
20:46:12.303483 IP MY-CLIENT.55494>  MY-SERVER.www: Flags [.], ack 7659, win
4280, length 0
20:46:12.303492 IP MY-CLIENT.55494>  MY-SERVER.www: Flags [F.], seq 724, ack
7659, win 4280, length 0
20:46:20.111011 IP MY-CLIENT.55493>  MY-SERVER.www: Flags [P.], seq
3064322029:3064322755, ack 1531281668, win 4280, length 726
20:46:20.140771 IP MY-CLIENT.55495>  MY-SERVER.www: Flags [P.], seq
2914190645:2914191371, ack 2823463340, win 4280, length 726
20:46:20.305019 IP MY-CLIENT.55493>  MY-SERVER.www: Flags [.], ack 320, win
4200, length 0
20:46:20.305032 IP MY-CLIENT.55493>  MY-SERVER.www: Flags [F.], seq 726, ack
320, win 4200, length 0
20:46:20.324906 IP MY-CLIENT.55495>  MY-SERVER.www: Flags [.], ack 709, win
4103, length 0
20:46:20.334540 IP MY-CLIENT.55495>  MY-SERVER.www: Flags [F.], seq 726, ack
709, win 4103, length 0
20:46:22.087034 IP MY-CLIENT.55496>  MY-SERVER.www: Flags [F.], seq
2675337998, ack 678907057, win 4280, length 0
20:46:22.277682 IP MY-CLIENT.55496>  MY-SERVER.www: Flags [R.], seq 1, ack
188, win 0, length 0

Also of interest is the fact that there is about 3k SYN_RECV, 20k TIME_WAIT
and 200 ESTABLISHED connections in netstat. Under the "errors - resp" column
of the haproxy stats page for the backend, if I hover over the numbers for
backend it says "connection resets during transfer: 300k+ client, 0 server".

Any help is greatly appreciated, I am stumped.

Ivan


Reply via email to