是否存在套接字连接的保活?

ano*_*one 1 linux tcpip nginx keepalive socket

预简报:

尽管我的问题很广泛,但我正在处理连接到 php-fpm (fcgi) 的 nginx,它通过本地套接字 (/tmp/somesocket.socket) 提供服务。

Nginx 有一个设置来保持与 fcgi 后端的连接(http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn)。

这就是我的问题所涉及的。

题:

在linux中,当连接到本地套接字时,是否存在keepalives这样的东西?

保持连接是否会消除(甚至是一点点)与创建/拆除连接相关的一些开销?

谢谢。

Mat*_*Ife 5

我假设您在这里指的是本地 unix 套接字。

在linux中,当连接到本地套接字时,是否存在keepalives这样的东西?

不,keepalive 防止远程端超时。由于主机知道连接双方的状态,因此保持连接是多余的。

保持连接是否会消除(甚至是一点点)与创建/拆除连接相关的一些开销?

是的,以维护更多文件描述符为代价,这在实践中可能是非常便宜的成本。建立连接并关闭它会导致 5 次系统调用(在客户端打开并连接,在服务器上接受,在客户端/服务器上关闭),在必要时避免维护连接。