Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Document how to prevent PostgreSQL itself from exhausting memory.
authorRobert Haas <rhaas@postgresql.org>
Thu, 30 Aug 2012 18:14:22 +0000 (14:14 -0400)
committerRobert Haas <rhaas@postgresql.org>
Thu, 30 Aug 2012 18:23:33 +0000 (14:23 -0400)
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

index c5c2de00e2f0f3cead4e217a3ae647aed56e2971..3645d4c5a92dc026914a6dc95853a56a73051add 100644 (file)
@@ -1258,9 +1258,10 @@ default:\
     In Linux 2.4 and later, the default virtual memory behavior is not
     optimal for <productname>PostgreSQL</productname>. Because of the
     way that the kernel implements memory overcommit, the kernel might
-    terminate the <productname>PostgreSQL</productname> server (the
-    master server process) if the memory demands of
-    another process cause the system to run out of virtual memory.
+    terminate the <productname>PostgreSQL</productname> postmaster (the
+    master server process) if the memory demands of either
+    <productname>PostgreSQL</productname> or another process cause the
+    system to run out of virtual memory.
    </para>
 
    <para>
@@ -1287,6 +1288,19 @@ Out of Memory: Killed process 12345 (postgres).
     swap space are exhausted.
    </para>
 
+   <para>
+    If <productname>PostgreSQL</productname> 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
+    <link linkend="guc-shared-buffers"><varname>shared_buffers</></link>
+    and <link linkend="guc-work-mem"><varname>work_mem</></link>.  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
+    <link linkend="guc-max-connections"><varname>max_connections</></link>
+    and instead make use of external connection-pooling software.
+   </para>
+
    <para>
     On Linux 2.6 and later, it is possible to modify the
     kernel's behavior so that it will not <quote>overcommit</> memory.