- 内存过量分配允许Linux分配超出物理内存的地址空间,仅在首次访问时使用物理页面;当已访问的页面超过RAM时,过量分配可能触发OOM杀手。
- Postgres容易遭受OOM杀手的攻击,因为共享内存段(缓冲区、WAL、锁)在后端之间共享;SIGKILL可能破坏该段,迫使postmaster通过崩溃恢复重启整个实例。
- 严格过量分配(vm.overcommit_memory=2)使内核跟踪已提交的内存,并拒绝超出限制的分配,返回ENOMEM而非杀死进程。
- Postgres将ENOMEM视为查询错误:事务回滚,查询失败并显示