关于连接:postgresql“keepalives”参数

postgresql “keepalives” parameter

根据https://www.postgresql.org/docs/current/static/libpq-connect.html,参数"keepalives"和其他参数"keepalives_idle","keepalives_interval"和"keepalives_count"仅在keepalives =时才相关1。
但是我不清楚如果参数keepalives设置为零意味着什么?
如果keepalives参数设置为零(keepalives = 0)会发生什么?
这是否意味着postgresql会话永远不会终止? 如果客户端申请被关闭会发生什么? 如果网络连接中断,会发生什么? 这是否意味着Postgresql服务器永远不会终止空闲会话?


keepalives是客户端设置。

如果将其设置为0,则客户端计算机上的TCP套接字将SO_KEEPALIVE套接字选项设置为0。

然后,它不会在与数据库服务器的空闲连接上发送keepalive消息,以检查另一端是否仍然存在。

结果是客户端不会检测数据库服务器是否意外终止,即没有关闭TCP连接。

默认设置(在Linux上)已关闭。

通常没有必要在客户端启用keepalive:客户端会在下次尝试与之通话时注意服务器何时死亡。

keepalive消息的另一个用途是阻止防火墙或代理关闭空闲连接。 但是,由于PostgreSQL服务器无论如何都能在服务器端启用keepalive,因此应该注意这一点。