选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / SQL 状态码 / Class 57 操作员干预

57P05 idle_session_timeout

ERROR 源码确认 详解 未实测

类别
Class 57 操作员干预
严重等级
ERROR
条件名
idle_session_timeout
宏名称
ERRCODE_IDLE_SESSION_TIMEOUT
启用版本
14
状态
活跃

版本覆盖

  1. 18
  2. 17
  3. 16
  4. 15
  5. 14
  1. 13
  2. 12
  3. 11
  4. 10
  1. 19 beta
  2. 20 dev

速览

57P05idle_session_timeout 到期、backend 确实处于命令之间的 idle 状态时终止 session。固定代码只在无事务分支启动这个 timer;idle-in-transaction 使用另一条件和 timer。

含义

固定 primary 是 terminating connection due to idle-session timeout,severity 为 FATAL。PostgresMain 在 backend 报告 STATE_IDLE 后、且 IsTransactionOrTransactionBlock() 为假时才启用 idle-session timer。读到命令后立即关闭该 timer。因此 57P05 是 session 生命周期终止,区别于 statement timeout 57014、lock timeout 55P03、idle-in-transaction timeout 25P03 和 transaction timeout 25P04

消息

  • primary:terminating connection due to idle-session timeout
  • severity:FATAL;timer interrupt 会终止连接,不返回可恢复的语句级 ERROR。
  • 边界:命令之间真正 idle 的 session 使用 57P05;开放事务内 idle 的 session 使用单独的 idle-in-transaction timer/条件。

报文模板

源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。

主消息 terminating connection due to idle-session timeout

来源:src/backend/tcop/postgres.c @ REL_18_6

诊断

记录 primary、backend PID、idle_session_timeout 值及来源、最后一条命令、pg_stat_activity 状态、事务状态和服务器日志。确认 timer 启动时 session 是 idle 还是 idle in transaction。单凭客户端耗时不能把它和 statement/lock timeout 区分开,还应结合连接最后的 ReadyForQuery 状态解释 SQLSTATE。

处理

关闭或重建已过期连接,把长时间工作改成明确的工作单元,不要依赖闲置 session。只有策略允许且工作负载确有需要时才调整 idle_session_timeout。FATAL 会关闭连接,原 session 上没有可发送的有效 ROLLBACK;重连后,重放非幂等命令前先核对持久化效果。若工作实际是在事务内 idle,应分别诊断 25P03/25P04 和事务归属。

版本

锁定目录从 14.0 记录此条件;该目录边界不等于精确实现引入版本。固定源码覆盖 PostgreSQL 18.6。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 57 操作员干预 Operator Intervention 7 个
57000 operator_intervention ERRCODE_OPERATOR_INTERVENTION ERROR 7.4
运维干预类别的通用条件,核心未见直接调用。 活跃
57014 query_canceled ERRCODE_QUERY_CANCELED ERROR 7.4
语句被取消,含 statement_timeout 到期。 活跃
57P01 admin_shutdown ERRCODE_ADMIN_SHUTDOWN ERROR 7.4
管理员关闭服务器或终止后端,会话被断开。 活跃
57P02 crash_shutdown ERRCODE_CRASH_SHUTDOWN ERROR 7.4
postmaster 因崩溃重启而令后端回滚退出。 活跃
57P03 cannot_connect_now ERRCODE_CANNOT_CONNECT_NOW ERROR 7.4
服务器处于启动或恢复中,暂不接受连接。 活跃
57P04 database_dropped ERRCODE_DATABASE_DROPPED ERROR 9.0
所连数据库被删除,恢复冲突终止了会话。 活跃
57P05 idle_session_timeout ERRCODE_IDLE_SESSION_TIMEOUT ERROR 14
空闲会话超过 idle_session_timeout 被终止。 活跃