idle_session_timeout 是一个 配置参数,用于确定何时终止空闲会话。它默认是禁用的。
idle_session_timeout 在 PostgreSQL 14 中添加。
用法
如果 idle_session_timeout 设置为非零值,任何在事务之外空闲的会话将被自动终止。
要自动终止在事务中空闲的会话,请参阅 idle_in_transaction_session_timeout(从 PostgreSQL 9.6 开始可用)。
默认值
idle_session_timeout 的默认值为:0(禁用)。
按 PostgreSQL 版本详细信息
idle_session_timeout (PostgreSQL 19)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 0 表示禁用超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
idle_session_timeout (PostgreSQL 18)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 0 表示禁用超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
idle_session_timeout (PostgreSQL 17)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 值为 0 将关闭超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
idle_session_timeout (PostgreSQL 16)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 值为 0 将关闭超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
idle_session_timeout (PostgreSQL 15)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 值为 0 将关闭超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
idle_session_timeout (PostgreSQL 14)
| 设置 | 0 |
| 单位 | 毫秒 |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置在非事务状态下,查询之间的最大允许空闲时间。 |
| 扩展描述 | 值为 0 将关闭超时。 |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 0 |
| 重置值 | 0 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
- PostgreSQL 14
- 添加于(提交 9877374b)
示例
postgres=# SHOW idle_session_timeout; idle_session_timeout ---------------------- 5s (1 row)
...至少等待 5 秒钟...
日志文件条目将看起来像这样
[2021-01-07 09:49:48 UTC] psql postgres postgres LOG: 00000: statement: SHOW idle_session_timeout; [2021-01-07 09:49:53 UTC] psql postgres postgres FATAL: 08P02: terminating connection due to idle-session timeout [2021-01-07 09:49:53 UTC] psql postgres postgres LOG: 00000: disconnection: session time: 0:00:07.060 user=postgres database=postgres host=::1 port=33454
在同一客户端中尝试执行命令(psql)将导致出现错误消息,报告超时并重置连接。
postgres=# SELECT 1;
FATAL: terminating connection due to idle-session timeout
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=#
参考资料
- PostgreSQL 文档: idle_session_timeout
