Keepalived восходящее соединение с Unicorn через сокет

Nginx 1.1.4+ может обслуживать восходящее соединение с директивой HTTP1.1 keepalive, см. официальная документация (это не то же самое, что и соединения Keepalived клиентов). Таким образом, конфигурация Unicorn может выглядеть следующим образом:

upstream unicorn {
  server             unix:/tmp/unicorn.todo.sock fail_timeout=0;
  keepalive          4;
}

server {
  try_files          $uri/index.html $uri @unicorn;
  keepalive_timeout  70;

  location @unicorn {
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host $http_host;
    proxy_redirect     off;
    proxy_pass         http://unicorn;

    proxy_http_version 1.1;
    proxy_set_header   Connection "";
  }
}

Эти заголовки необходимы для HTTP-соединения: proxy_http_version и proxy_set_header.

Итак, вопрос в том, действительна ли конфигурация или сокет-соединение само по себе является постоянным?


person Anatoly    schedule 04.07.2012    source источник


Ответы (2)


Да, это действительно. Нет никакой разницы между UNIX-сокетом и TCP/IP-сокетом с точки зрения HTTP Keepalive.

person VBart    schedule 09.07.2012
comment
большое спасибо! Также было бы здорово получить ваш профессиональный отзыв о конфигурации gist.github.com/3052776. - person Anatoly; 10.07.2012
comment
VBart: документы Unicorn говорят, поскольку Unicorn предназначен только для приложений, которые быстро отправляют тело ответа без поддержки активности сокеты всегда будут сброшены при закрытии, чтобы предотвратить задержки. Означает ли это, что восходящее соединение nginx перегружено? - person Anatoly; 10.07.2012
comment
Похоже на то. unicorn.bogomips.org/DESIGN.html говорит: Как и Mongrel, ни keepalive, ни конвейеризация поддерживаются. Тогда опция keepalive для unicorn бесполезна и вносит небольшие накладные расходы на обработку. - person VBart; 10.07.2012

Unicorn не поддерживает постоянное (keep-alive) соединение по дизайну. Таким образом, вы не должны пытаться использовать постоянное (keep-alive) соединение с серверной частью unicorn.

person sitnikovme    schedule 15.06.2015