2015-08-19 5 views
0

Мы используем haproxy 1.5.14 как балансировщик нагрузки для HTTP, а также конечные точки HTTPS для нескольких доменных имен. Для конечных точек HTTPS мы используем инспекцию заголовков SSL NI, чтобы узнать правильный внутренний узел.Время ожидания haproxy (qtime) во время проверки SSL SNI

В моей текущей установке, где существует несколько конечных точек https, я заметил, что backend qtime stat vaue довольно высокий (200-300 мс), что меня очень беспокоит. qcur (текущая очередь lengh) равна нулю одновременно. Мы в основном замедляем все наши запросы на 200 мс-300 мс на стороне haproxy? (не уверен, правильно ли я понял это значение qtime). Если да, я определенно ищу способ его оптимизации.

Такое поведение наблюдается только на серверах HTTPS, а не на HTTP-серверах. Мне интересно, является ли это результатом инспекции заголовков интерфейсов SNI, которые используются для определения правильных базовых узлов. Будет ли запрашиваться пребывание в очереди во время проверки SNI SSL?

Наша текущая конфигурация (только для HTTPS конечных точек):

global 
     log   127.0.0.1 local2 
     chroot  /var/lib/haproxy 
     pidfile  /var/run/haproxy.pid 
     maxconn  40000 
     ulimit-n 100000 
     user  haproxy 
     group  haproxy 
     daemon 
     stats socket /var/lib/haproxy/stats 

defaults 
     mode     http 
     log      global 
     option     httplog 
     option     dontlognull 
     option http-server-close 
     retries     3 
     timeout http-request 1s 
     timeout queue   1m 
     timeout connect   3s 
     timeout client   1m 
     timeout server   30s 
     timeout http-keep-alive 2s 
     timeout check   3s 
     maxconn     40000 

frontend https-in *:443 
    mode tcp 
      option tcplog 
      option socket-stats 

      tcp-request inspect-delay 5s 
      tcp-request content accept if { req_ssl_hello_type 1 } 

      use_backend foo-ssl if { req_ssl_sni -m beg foo } 
      use_backend bar-ssl if { req_ssl_sni -m beg bar } 

backend foo-ssl *:443 
    balance leastconn 
    mode tcp 
      option ssl-hello-chk 

      server foo1 x.x.x.x:443 maxconn 10000 check 
      server foo2 x.x.x.x:443 maxconn 10000 check 

backend bar-ssl *:443 
    balance leastconn 
    mode tcp 
      option ssl-hello-chk 

      server bar1 x.x.x.x:443 maxconn 10000 check 
      server bar2 x.x.x.x:443 maxconn 10000 check 

ответ

0

Это не должно случиться, или это означает, что ваш клиент берет много времени, чтобы отправить SSL привет с SNI, который не так много ожидаемого либо , Вы должны взять сетевой захват (tcpdump) и запустить strace -tt над процессом haproxy, чтобы узнать, где время потеряно.