我们正在使用HA-Proxy version 1.5.11 2015/01/31 ,从昨天我们注意到,通过https的所有对我们的服务的请求是非常缓慢的。 从Chrome开发者控制台中,我们可以看到以下时间:
Initial Connection 7.59s SSL 6.42s
我们testing了socket的统计信息
# ss -s Total: 2080 (kernel 2088) TCP: 2674 (estab 2141, closed 433, orphaned 84, synrecv 0, timewait 433/0), ports 0
所以它可能远低于65k端口。
以下是我们的haproxy.cfg
# Global configuration global log 127.0.0.1 local0 notice maxconn 50000 stats socket /tmp/proxystats level admin tune.ssl.default-dh-param 2048 #user deploy #group deploy #daemon tune.bufsize 32768 # Default configuration defaults log global mode http option httplog option dontlognull stats enable stats uri /proxystats stats auth username:pass stats realm Haproxy\ Statistics stats refresh 5s timeout connect 120000 timeout client 120000 timeout server 120000 option redispatch option forwardfor option http-server-close errorfile 500 /etc/haproxy/errors/503.http errorfile 502 /etc/haproxy/errors/503.http errorfile 503 /etc/haproxy/errors/503.http # HTTP frontend configuration frontend http mode http bind *:80 #redirect scheme https if !{ ssl_fc } redirect prefix https://myservice.com code 301 if { hdr(host) -i myservice.com } acl www hdr(host) -i www.myservice.com acl api hdr(host) -i api.myservice.com acl browser hdr(host) -i br-rx.myservice.com use_backend api_server if www use_backend api_server if api use_backend browser_receiver if browser # HTTPs frontend configuration frontend https mode http bind *:443 ssl crt <our .com pem> crt <second domain pem> crt <third domain pem> redirect prefix https://www.myservice.com code 301 if { hdr(host) -i myservice.com } use_backend api_server if { ssl_fc_sni www.myservice.com } use_backend api_server if { ssl_fc_sni api.myservice.com } use_backend browser_receiver if { ssl_fc_sni br-rx.myservice.com }
系统中的CPU和内存是正常的。 CPU 9.3%, MEM: 335MB
我们还能从哪里开始寻找?
鉴于Chrome报告连接build立时间极高,这意味着SYN数据包正在被丢弃或至less没有被应答。 这可能发生在三种情况下:
编辑:我只是意识到,你只改变了全局maxconn设置,但不是默认的,所以你的前端仍然限制在2000并发连接(检查haproxy -vv)。 而你的netstat似乎表明你距离这个限制并不太远,所以这可能是一个原因。 请在默认部分添加一个maxconn指令。