postgresql" keepalives"参数

时间:2017-10-22 21:02:40

标签: postgresql connection database-connection libpq

根据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服务器永远不会终止空闲会话?

1 个答案:

答案 0 :(得分:2)

keepalives是客户端设置。

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

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

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

默认设置(在Linux上)是 off

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

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