keep-alive

12
suffix
На сайте с 26.08.2010
Offline
325
1826

Есть связка Nginx +Apache

По умолчанию keep-alive и там и там включен.

Кое где (сам Битрикс в своём учебнике) советуют отключать keep-alive в аpache в такой двух-уровневой конфигурации.

Причины понятны: высвобождаются ресурсы железа.

Однако, допустим ресурсов хоть попой ешь, тогда отключать мне кажется нет смысла ибо хотя локальное соединение между nginx и аpache происходит очень быстро - ведь чуть быстрее будет если оно постоянно висеть будет ?

Я прав ? Или нет ?

Клуб любителей хрюш (https://www.babai.ru)
Vin_cent
На сайте с 22.01.2010
Offline
165
#1

Проверил у себя, включив в apache keep-alive. Спустя несколько часов, разницы ни в чём не заметил.

suffix
На сайте с 26.08.2010
Offline
325
#2
Vin_cent:
Проверил у себя, включив в apache keep-alive. Спустя несколько часов, разницы ни в чём не заметил.

Спасибо большое ! Гланое что хуже не стало - значит у себя отключать не буду :)

M
На сайте с 17.09.2016
Offline
124
#3

Я думаю всё гораздо проще, proxy_pass не использует keep-alive в Вашем случае

Синтаксис: proxy_socket_keepalive on | off;

Умолчание:

proxy_socket_keepalive off;

Контекст: http, server, location

Эта директива появилась в версии 1.15.6.

Конфигурирует поведение “TCP keepalive” для исходящих соединений к проксируемому серверу. По умолчанию для сокета действуют настройки операционной системы. Если указано значение “on”, то для сокета включается параметр SO_KEEPALIVE.

suffix
На сайте с 26.08.2010
Offline
325
#4
Mobiaaa:
Я думаю всё гораздо проще, proxy_pass не использует keep-alive в Вашем случае

Синтаксис: proxy_socket_keepalive on | off;
Умолчание:
proxy_socket_keepalive off;
Контекст: http, server, location
Эта директива появилась в версии 1.15.6.

Конфигурирует поведение “TCP keepalive” для исходящих соединений к проксируемому серверу. По умолчанию для сокета действуют настройки операционной системы. Если указано значение “on”, то для сокета включается параметр SO_KEEPALIVE.

Если я не ошибаюсь то эта директива для открытия keep-alive к "восходящему" серверу.

То есть - когда стоит в цепочке nginx+nginx то на первом этой директивой можно открыть эту возможность.

Вы же сами пишете "для исходящих" .

Повторюсь что могу ошибаться.

M
На сайте с 17.09.2016
Offline
124
#5

suffix,

Конфигурирует поведение “TCP keepalive” для исходящих соединений к проксируемому серверу

Это от nginx к бекенду, в данном случае к бекенду, прописанному в proxy_pass

suffix
На сайте с 26.08.2010
Offline
325
#6
Mobiaaa:
suffix,
Это от nginx к бекенду, в данном случае к бекенду, прописанному в proxy_pass

Стоит обновить nginx и включить попробовать ? Или тупо в apache отключить keep-alive и не париться ?

M
На сайте с 17.09.2016
Offline
124
#7

suffix, не стоит игра свеч :)

Доли милисекунд будут, а лишняя память пусть лучше под файловый кеш используется

suffix
На сайте с 26.08.2010
Offline
325
#8
Mobiaaa:
не стоит игра свеч :) Доли милисекунд будут

Согласен, но перфекционизм руки чешет :)

Mobiaaa:
а лишняя память пусть лучше под файловый кеш используется

free -h:


total used free shared buff/cache available
Mem: 62G 2,6G 50G 325M 9,1G 59G
Swap: 0B 0B 0B

Куда уж больше то ?

suffix
На сайте с 26.08.2010
Offline
325
#9
Mobiaaa:
Я думаю всё гораздо проще, proxy_pass не использует keep-alive в Вашем случае

Синтаксис: proxy_socket_keepalive on | off;
Умолчание:
proxy_socket_keepalive off;
Контекст: http, server, location
Эта директива появилась в версии 1.15.6.

Конфигурирует поведение “TCP keepalive” для исходящих соединений к проксируемому серверу. По умолчанию для сокета действуют настройки операционной системы. Если указано значение “on”, то для сокета включается параметр SO_KEEPALIVE.

Пришлось на форуме nginx вопрос задать:

"Эта опция - чтобы выставить SO_KEEPALIVE на сокете соединения с

бэкендом, аналогично параметру "so_keepalive" для listen-сокетов.

Это нужно, чтобы даже по неактивному соединению периодически ходили

пакеты, и соответственно а) если та сторона не отвечает - то nginx об

этом узнал по возможности раньше, и б) если между nginx'ом и

бэкендом стоит statefull firewall, то он видел, что соединение -

активно, и соответствующий ему state не надо выкидывать.

Если вы хотите просто хотите использовать постоянные соединения с

бэкендами - вам эта опция не нужна, а нужно настроить keepalive в

соответствии с инструкциями тут:

http://nginx.org/r/keepalive "

Так что настроил как там указано:

upstream http_backend {

server 127.0.0.1:8080;

keepalive 100;

}

location / {

proxy_pass http://http_backend;

proxy_redirect http://http_backend /;

proxy_http_version 1.1;

proxy_set_header Connection "";

}

И всё заработало.

А proxy_socket_keepalive on; в моём случае вредна даже была бы.

Vin_cent
На сайте с 22.01.2010
Offline
165
#10
suffix:
Пришлось на форуме nginx вопрос задать:

"Эта опция - чтобы выставить SO_KEEPALIVE на сокете соединения с
бэкендом, аналогично параметру "so_keepalive" для listen-сокетов.

Это нужно, чтобы даже по неактивному соединению периодически ходили
пакеты, и соответственно а) если та сторона не отвечает - то nginx об
этом узнал по возможности раньше, и б) если между nginx'ом и
бэкендом стоит statefull firewall, то он видел, что соединение -
активно, и соответствующий ему state не надо выкидывать.

Если вы хотите просто хотите использовать постоянные соединения с
бэкендами - вам эта опция не нужна, а нужно настроить keepalive в
соответствии с инструкциями тут:

http://nginx.org/r/keepalive "

Так что настроил как там указано:

upstream http_backend {
server 127.0.0.1:8080;
keepalive 100;
}
location / {
proxy_pass http://http_backend;
proxy_redirect http://http_backend /;
proxy_http_version 1.1;
proxy_set_header Connection "";
}

И всё заработало.

А proxy_socket_keepalive on; в моём случае вредна даже была бы.

Ты сейчас про nginx пишешь. А вопрос задавал про keep-alive в апачи. Так что с апачи? Включать там или нет?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий