idle_in_transaction_session_timeout
一个配置参数,用于确定会话在事务打开后多久终止。
idle_in_transaction_session_timeout
是一个 配置参数,用于确定在事务打开后多久终止会话。默认情况下禁用。
idle_in_transaction_session_timeout
在 PostgreSQL 9.6 中添加。
默认值
idle_in_transaction_session_timeout
的默认值为:0
(禁用)。
按PostgreSQL版本查看详情
idle_in_transaction_session_timeout (PostgreSQL 18)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置在事务中查询之间允许的最大空闲时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 17)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置在事务中查询之间允许的最大空闲时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 16)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置在事务中查询之间允许的最大空闲时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 15)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置在事务中查询之间允许的最大空闲时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 14)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置在事务中查询之间允许的最大空闲时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 13)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置任何空闲事务允许的最大持续时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 12)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置任何空闲事务允许的最大持续时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 11)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置任何空闲事务允许的最大持续时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 10)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置任何空闲事务允许的最大持续时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
idle_in_transaction_session_timeout (PostgreSQL 9.6)
设置 | 0 |
单位 | 毫秒 (ms) |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置任何空闲事务允许的最大持续时间。 |
额外描述 | 值为 0 将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行号 | |
等待重启 | 否 |
更改历史
- PostgreSQL 9.6
- 添加 (提交 c6dda1f4)
源代码
GUC变量在 src/backend/storage/lmgr/proc.c
int IdleInTransactionSessionTimeout = 0;
GUC配置在 src/backend/utils/misc/guc.c
{ {"idle_in_transaction_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT, gettext_noop("Sets the maximum allowed duration of any idling transaction."), gettext_noop("A value of 0 turns off the timeout."), GUC_UNIT_MS }, &IdleInTransactionSessionTimeout, 0, 0, INT_MAX, NULL, NULL, NULL },
超时在PostgresMain()
(src/backend/tcop/postgres.c) 中启动和执行。
示例
演示idle_in_transaction_session_timeout
的效果,设置一个非现实的短时间5s
postgres=# SET idle_in_transaction_session_timeout = '5s'; SET postgres=# SHOW idle_in_transaction_session_timeout; idle_in_transaction_session_timeout ------------------------------------- 5s (1 row)
postgres=# SELECT clock_timestamp(); clock_timestamp ---------------------------- 2019-08-06 16:32:44.603+01 (1 row) postgres=# BEGIN ; BEGIN
… *至少等待5秒钟* …
postgres=*# SELECT 1; FATAL: terminating connection due to idle-in-transaction 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=# SELECT clock_timestamp(); clock_timestamp ------------------------------ 2019-08-06 16:32:52.92625+01 (1 row)
服务器日志文件中将有一条类似于以下内容的条目
[2019-08-06 16:32:50 CET] psql postgres postgres FATAL: 25P03: terminating connection due to idle-in-transaction timeout
参考文献
- PostgreSQL文档: idle_in_transaction_session_timeout
有用链接
- idle_in_transaction_session_timeout:终止PostgreSQL中的空闲事务 - CyberTec 2018年4月的博文