Предварительный инструктаж:
Хотя мой вопрос носит широкий характер, я имею дело с 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 системных вызовов (открытие и соединение на клиенте, принятие на сервере, закрытие на клиенте / сервере), которых при поддержании соединения избегают до тех пор, пока это необходимо.