postgresql "keepalives"参数

标签 postgresql connection database-connection libpq

根据 PostgresSQL docs有参数 keepalives 和进一步的参数 keepalives_idle, keepalives_intervalkeepalives_count 只有当 keepalives= 1

但我不清楚如果参数 keepalives 设置为零是什么意思?

如果 keepalives 参数设置为零 (keepalives=0),究竟会发生什么?

这是否意味着 PostgreSQL session 永远不会终止?如果客户端应用程序关闭会怎样?如果网络连接断开会怎样?这是否意味着 PostgreSQL 服务器永远不会终止空闲 session ?

最佳答案

keepalives 是客户端设置。

如果将其设置为 0,则客户端计算机上的 TCP 套接字会将 SO_KEEPALIVE 套接字选项设置为 0(默认设置(在 Linux 上)为 1,这意味着启用了 keepalive) .

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

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

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

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

关于postgresql "keepalives"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46879146/

相关文章:

Java 数据库应用程序加载大量记录时卡住

sql-server - PostgreSQL 中的 nextval 和 curve 混淆

sql - 在 PostgreSQL 中,如何根据分类列中每个级别的比例从表中随机抽样?

java - Hibernate 方言未定义错误

mysql - 具有单个应用程序服务器实例的数据库连接池

java - 我该如何解决这个 Java Jdbc 连接错误?

php - codeigniter,将 grocery crud 与 postgresql 集成

database - 多个值的结果子查询 - SQL

Azure DevOps - 是否可以在免费套餐中添加服务连接?

sql - 连接到 SQL 数据库时出现 VBA 运行时错误