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

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

文档 / SQL 状态码 / Class 53 资源不足

53200 out_of_memory

ERROR 源码确认 详解 未实测

类别
Class 53 资源不足
严重等级
ERROR
条件名
out_of_memory
宏名称
ERRCODE_OUT_OF_MEMORY
启用版本
7.4
状态
活跃

版本覆盖

速览

53200 是 PostgreSQL 的内存不足条件。固定调用者包括普通 memory context 分配、共享内存和锁表容量、扩展/统计文件读取以及 WAL 读取处理器;应诊断具体操作和分配上下文,不能把所有内存失败归为一个原因。

含义

固定源码有几类不同边界:MemoryContextAllocationFailure 报告带请求大小和 memory context 名称的 out of memoryShmemAlloc 和锁表建立路径报告 out of shared memory,后者可能提示 max_locks_per_transaction。扩展路径把操作写入 detail:pg_stat_statementsout of memory 记录文件读取分配失败,WAL reader 也以相同 primary 搭配分配 detail。pg_stat_statements 这一分支的 severity 是 LOG,并从加载器返回,因此不等同于使客户端当前事务中止的 ERROR;核心和 WAL reader 的 ERROR 分支才需要正常事务恢复。两阶段事务源码路径实际是 WAL reader 分配路径,不能据此说达到 max_prepared_transactions 本身就发出 53200。

报文模板

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

主消息 out of memory
DETAIL Could not allocate enough memory to read file "%s".

来源:contrib/pg_stat_statements/pg_stat_statements.c @ REL_18_6

主消息 out of memory
DETAIL Failed while allocating a WAL reading processor.

来源:contrib/pg_walinspect/pg_walinspect.c @ REL_18_6

主消息 out of memory
DETAIL Failed while allocating a WAL reading processor.

来源:src/backend/access/transam/twophase.c @ REL_18_6

主消息 out of memory
DETAIL Failed while creating memory context "%s".

来源:src/backend/utils/mmgr/aset.c @ REL_18_6

主消息 out of memory
DETAIL Failed on request of size %zu in memory context "%s".

来源:src/backend/utils/mmgr/mcxt.c @ REL_18_6

主消息 out of shared memory (%zu bytes requested)

来源:src/backend/storage/ipc/shmem.c @ REL_18_6

主消息 out of shared memory
HINT You might need to increase "max_locks_per_transaction".

来源:src/backend/storage/lmgr/lock.c @ REL_18_6

诊断

保留 severity、primary、detail、hint、操作、backend 和服务器日志,判断是在 backend memory context、共享内存/锁表、文件/统计结构还是 WAL reader 分配。若 primary 为 out of shared memory 且 hint 指向 max_locks_per_transaction,检查持锁事务与锁表配置;提高它会在启动时消耗共享内存。不要只凭 SQLSTATE 推断主机内存。

处理

确认平台限制和影响后,再降低或重塑操作、释放应用压力或调整消息指向的容量。先结束或回滚持有过多锁的事务,再考虑调整 max_locks_per_transaction;该 hint 不等于操作系统 OOM。文件/WAL/统计操作失败后先验证对象。核心/WAL reader 的 ERROR 会使显式事务失败,重试前执行 ROLLBACKROLLBACK TO SAVEPOINT;自动提交只有在分配原因修复后才能重试。pg_stat_statementsLOG 分支属于后台加载器,本身不要求客户端恢复事务。本页不在真实主机制造 OOM。

版本

锁定目录从 7.4 记录;引用扩展和核心路径来自 PostgreSQL 18.6,未执行 OOM 运行。

来源

证据

断言

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

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 53 资源不足 Insufficient Resources 5 个
53000 insufficient_resources ERRCODE_INSUFFICIENT_RESOURCES ERROR 7.4
服务器资源不足的宽泛条件,需看消息定位资源。 活跃
53100 disk_full ERRCODE_DISK_FULL ERROR 7.4
写文件时发生短写,通常是磁盘空间耗尽。 活跃
53200 out_of_memory ERRCODE_OUT_OF_MEMORY ERROR 7.4
内存分配失败,涵盖会话内存与共享内存不足。 活跃
53300 too_many_connections ERRCODE_TOO_MANY_CONNECTIONS ERROR 7.4
连接数达到角色、库或服务器上限,新连接被拒。 活跃
53400 configuration_limit_exceeded ERRCODE_CONFIGURATION_LIMIT_EXCEEDED ERROR 9.2
配置上限或进程槽位耗尽,如后台 worker 槽位。 活跃