小编Bar*_*ski的帖子

Postgres 子进程占用大量内存

我们有一个 postgres 9.0 实例,它运行在一台非常强大的机器上(96G RAM/24 个内核)。最近几周,我们经历了由于 OOM 杀手因内存不足而杀死 postgres 子进程而导致的崩溃。似乎由于使用连接池,这些子进程寿命很长(这是有道理的,因为打开和关闭连接需要时间),问题是它们的内存消耗逐渐增长,甚至达到 9Gigs/进程。正如您可能想象的那样,拥有 10 个这样的内存就可以填满可用的内存,并且 oom-killer 就会启动。

问题是:

  1. 如果我们使用默认配置参数,进程怎么可能分配这么多内存?
  2. 为什么这些进程不释放内存?

作为参考,可能影响内存的设置:

max_connections = 950
shared_buffers = 32MB
Run Code Online (Sandbox Code Playgroud)

所有其他设置都不会被覆盖,这意味着我们使用默认值。

postgresql linux outofmemoryerror memory-usage

3
推荐指数
1
解决办法
4214
查看次数