我们有一个 postgres 9.0 实例,它运行在一台非常强大的机器上(96G RAM/24 个内核)。最近几周,我们经历了由于 OOM 杀手因内存不足而杀死 postgres 子进程而导致的崩溃。似乎由于使用连接池,这些子进程寿命很长(这是有道理的,因为打开和关闭连接需要时间),问题是它们的内存消耗逐渐增长,甚至达到 9Gigs/进程。正如您可能想象的那样,拥有 10 个这样的内存就可以填满可用的内存,并且 oom-killer 就会启动。
问题是:
作为参考,可能影响内存的设置:
max_connections = 950
shared_buffers = 32MB
Run Code Online (Sandbox Code Playgroud)
所有其他设置都不会被覆盖,这意味着我们使用默认值。