Мы используем HA-Proxy version 1.5.11 2015/01/31
, и со вчерашнего дня мы заметили, что все запросы к нашему сервису по https очень медленные. В консоли разработчика Chrome мы видим следующие тайминги:
Initial Connection 7.59s
SSL 6.42s
Мы протестировали статистику сокетов
# ss -s
Total: 2080 (kernel 2088)
TCP: 2674 (estab 2141, closed 433, orphaned 84, synrecv 0, timewait 433/0), ports 0
Так что количество возможных портов значительно ниже 65 тыс.
Ниже представлен наш 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 9.3%, MEM: 335MB
Где еще мы можем начать искать?
Учитывая, что Chrome сообщает очень много связь время установки, это означает, что пакеты SYN отбрасываются или, по крайней мере, не получают ответа. Это может произойти в трех ситуациях:
Изменить: я просто понимаю, что вы изменили только глобальную настройку maxconn, но не настройку по умолчанию, поэтому ваши интерфейсы по-прежнему ограничены 2000 одновременными подключениями (проверьте с помощью haproxy -vv). И ваш netstat, кажется, указывает, что вы не слишком далеко от этого предела, так что это может быть одной из причин. Добавьте директиву maxconn в раздел настроек по умолчанию.