client_connection_check_interval
用于检查客户端连接是否仍然活动的配置参数
client_connection_check_interval 是一个 配置参数,用于检查客户端连接是否仍然活动,如果底层操作系统支持此功能的话。
client_connection_check_interval 在 PostgreSQL 14 中被添加。
用法
check_client_connection_interval 仅在支持 poll 系统调用的 POLLRDHUP 扩展的操作系统上可用。
目前仅 Linux 支持此功能。
默认值
设置 check_client_connection_interval 的默认值为:0 (禁用)。
按 PostgreSQL 版本详细信息
client_connection_check_interval (PostgreSQL 19)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / TCP 设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | 0 禁用连接检查。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
client_connection_check_interval (PostgreSQL 18)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / TCP 设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | 0 禁用连接检查。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
client_connection_check_interval (PostgreSQL 17)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / TCP 设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
client_connection_check_interval (PostgreSQL 16)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / TCP 设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
client_connection_check_interval (PostgreSQL 15)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / 连接设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
client_connection_check_interval (PostgreSQL 14)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 连接和身份验证 / 连接设置 |
| 简短描述 | 设置在运行查询期间检查断开连接的时间间隔。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
- PostgreSQL 14
- 添加于 (提交 c30f54ad)
示例
当 check_client_connection_interval 被禁用(设置为 0)时,PostgreSQL 只会在查询完成后才能检测到客户端断开连接。
postgres=# SHOW client_connection_check_interval; client_connection_check_interval ---------------------------------- 0 (1 row) postgres=# SELECT pg_sleep(15); Terminated
相应的日志文件条目
[2021-04-02 11:09:23 UTC] psql postgres postgres LOG: 00000: statement: SELECT pg_sleep(15); [2021-04-02 11:09:38 UTC] psql postgres postgres LOG: 00000: disconnection: session time: 0:03:17.753 user=postgres database=postgres host=127.0.0.1 port=38516
当 check_client_connection_interval 启用时
postgres=# SHOW client_connection_check_interval; client_connection_check_interval ---------------------------------- 5s (1 row) postgres=# SELECT pg_sleep(15); Terminated
相应的日志文件条目
[2021-04-02 11:14:20 UTC] psql postgres postgres LOG: 00000: statement: SELECT pg_sleep(15); [2021-04-02 11:14:25 UTC] psql postgres postgres FATAL: 08006: connection to client lost [2021-04-02 11:14:25 UTC] psql postgres postgres STATEMENT: SELECT pg_sleep(15); [2021-04-02 11:14:25 UTC] psql postgres postgres LOG: 00000: disconnection: session time: 0:00:34.703 user=postgres database=postgres host=127.0.0.1 port=38594
在这里,客户端断开连接在 check_client_connection_interval 已经过去后不久就被检测到,并且远早于查询原本会终止的时间。
参考资料
- PostgreSQL 14 文档: client_connection_check_interval
分类
另请参阅
tcp_user_timeout
