Назад | Перейти на главную страницу

Существуют ли сообщения поддержки активности для соединений сокетов?

Предварительный инструктаж:

Хотя мой вопрос носит широкий характер, я имею дело с nginx, подключающимся к php-fpm (fcgi), который обслуживается через локальный сокет (/tmp/somesocket.socket).

Nginx имеет настройку для поддержания активности соединений с бэкэндами fcgi ( http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn ).

Вот к чему мой вопрос.

Вопрос:

В linux при подключении к локальным сокетам существует такая вещь, как keepalive?

Устранит ли поддержание соединения (даже немного) некоторые накладные расходы, связанные с созданием / разрывом соединения?

Спасибо.

Я предполагаю, что вы имеете в виду локальные сокеты unix.

В linux при подключении к локальным сокетам существует такая вещь, как keepalive?

Нет, пакеты поддержки активности предотвращают тайм-аут удаленной стороны. Поскольку хост знает статус обеих сторон соединения, поддержка активности избыточна.

Устранит ли поддержание соединения (даже немного) некоторые накладные расходы, связанные с созданием / разрывом соединения?

Да, за счет поддержки большего количества файловых дескрипторов, что, вероятно, является очень дешевой ценой с практической точки зрения. Установка и закрытие соединения влечет за собой 5 системных вызовов (открытие и соединение на клиенте, принятие на сервере, закрытие на клиенте / сервере), которых при поддержании соединения избегают до тех пор, пока это необходимо.