I have applied a patch to improve shared memory failure reporting, attached. We no longer report actual parameter _values_ and suggest that other parameters might also cause such failures.
--------------------------------------------------------------------------- Alvaro Herrera wrote: > Excerpts from Robert Haas's message of jue oct 14 21:36:48 -0300 2010: > > On Wed, Oct 13, 2010 at 2:39 PM, Peter Eisentraut <pete...@gmx.net> wrote: > > > Since MaxBackends is actually max_connections + autovacuum_max_workers + > > > 1, when you get an error message from shmget() it will tell you > > > > > > "reduce ... its max_connections parameter (currently 104)" > > > > > > when you actually set > > > > > > max_connections = 100 > > > > > > This looks a bit silly. > > > > > > Should we just make the error messages report MaxBackends - > > > autovacuum_max_workers - 1, or is it worthwhile calling out > > > autovacuum_max_workers separately? > > > > I suppose there are other reasons we could run out of shared memory, > > too. max_locks_per_transaction, for example. It might be good to > > revise the wording of the message so as to suggest that these are only > > some of the possible causes. > > Agreed. Something like "reduce one or more of the following parameters: > shared_buffers (currently NN), max_connections (currently NN), > autovacuum_max_workers (currently MM), > > I also suggest that it would be good to revise these things so that > sentences within those monstruous paragraphs can be translated > separately. Maybe changing the ErrorData stuff so that there can be > more than one errhint field? If that's too much trouble, perhaps having > "%s. %s. %s. %s" as the first errhint parameter, and have each sentence > be its own translatable unit. > > I also just noticed that we use stars for emphasis here, "This error > does *not* mean..." which is maybe too cute. > > -- > ??lvaro Herrera <alvhe...@commandprompt.com> > The PostgreSQL Company - Command Prompt, Inc. > PostgreSQL Replication, Consulting, Custom Development, 24x7 support > > -- > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-hackers -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index aece026..aba6fa8 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -153,25 +153,25 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) "segment exceeded your kernel's SHMMAX parameter. You can either " "reduce the request size or reconfigure the kernel with larger SHMMAX. " "To reduce the request size (currently %lu bytes), reduce " - "PostgreSQL's shared_buffers parameter (currently %d) and/or " - "its max_connections parameter (currently %d).\n" + "PostgreSQL's shared memory usage, perhaps by reducing shared_buffers" + "or max_connections.\n" "If the request size is already small, it's possible that it is less than " "your kernel's SHMMIN parameter, in which case raising the request size or " "reconfiguring SHMMIN is called for.\n" "The PostgreSQL documentation contains more information about shared " "memory configuration.", - (unsigned long) size, NBuffers, MaxBackends) : 0, + (unsigned long) size) : 0, (errno == ENOMEM) ? errhint("This error usually means that PostgreSQL's request for a shared " "memory segment exceeded available memory or swap space, " "or exceeded your kernel's SHMALL parameter. You can either " "reduce the request size or reconfigure the kernel with larger SHMALL. " "To reduce the request size (currently %lu bytes), reduce " - "PostgreSQL's shared_buffers parameter (currently %d) and/or " - "its max_connections parameter (currently %d).\n" + "PostgreSQL's shared memory usage, perhaps by reducing shared_buffers" + "or max_connections.\n" "The PostgreSQL documentation contains more information about shared " "memory configuration.", - (unsigned long) size, NBuffers, MaxBackends) : 0, + (unsigned long) size) : 0, (errno == ENOSPC) ? errhint("This error does *not* mean that you have run out of disk space. " "It occurs either if all available shared memory IDs have been taken, " @@ -179,11 +179,10 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) "or because the system's overall limit for shared memory has been " "reached. If you cannot increase the shared memory limit, " "reduce PostgreSQL's shared memory request (currently %lu bytes), " - "by reducing its shared_buffers parameter (currently %d) and/or " - "its max_connections parameter (currently %d).\n" + "perhaps by reducing shared_buffers or max_connections.\n" "The PostgreSQL documentation contains more information about shared " "memory configuration.", - (unsigned long) size, NBuffers, MaxBackends) : 0)); + (unsigned long) size) : 0)); } /* Register on-exit routine to delete the new segment */
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers