From 4fb505dff4fbf3b4661f20ec9cf00812b8ee9a2e Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Thu, 30 Aug 2012 14:14:22 -0400 Subject: [PATCH] Document how to prevent PostgreSQL itself from exhausting memory. The existing documentation in Linux Memory Overcommit seemed to assume that PostgreSQL itself could never be the problem, or at least it didn't tell you what to do about it. Per discussion with Craig Ringer and Kevin Grittner. --- doc/src/sgml/runtime.sgml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index c5c2de00e2..3645d4c5a9 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1258,9 +1258,10 @@ default:\ In Linux 2.4 and later, the default virtual memory behavior is not optimal for PostgreSQL. Because of the way that the kernel implements memory overcommit, the kernel might - terminate the PostgreSQL server (the - master server process) if the memory demands of - another process cause the system to run out of virtual memory. + terminate the PostgreSQL postmaster (the + master server process) if the memory demands of either + PostgreSQL or another process cause the + system to run out of virtual memory. @@ -1287,6 +1288,19 @@ Out of Memory: Killed process 12345 (postgres). swap space are exhausted. + + If PostgreSQL itself is the cause of the + system running out of memory, you can avoid the problem by changing + your configuration. In some cases, it may help to lower memory-related + configuration parameters, particularly + shared_buffers + and work_mem. In + other cases, the problem may be caused by allowing too many connections + to the database server itself. In many cases, it may be better to reduce + max_connections + and instead make use of external connection-pooling software. + + On Linux 2.6 and later, it is possible to modify the kernel's behavior so that it will not overcommit memory. -- 2.40.0