postgres.git / summary / log / commit / refs

commit    2c63b0930aee1bb5c265fad4a65c9d0b62b1f9da
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Tue Aug 23 13:55:37 2022 +0000
First released in: 16.0, 10.23, 11.18, 12.13, 13.9, 14.6, 15.0

    Doc: document possible need to raise kernel's somaxconn limit.
    
    On fast machines, it's possible for applications such as pgbench
    to issue connection requests so quickly that the postmaster's
    listen queue overflows in the kernel, resulting in unexpected
    failures (with not-very-helpful error messages).  Most modern OSes
    allow the queue size to be increased, so document how to do that.
    
    Per report from Kevin McKibbin.
    
    Discussion: https://postgr.es/m/CADc_NKg2d+oZY9mg4DdQdoUcGzN2kOYXBu-3--RW_hEe0tUV=g@mail.gmail.com


doc/src/sgml/runtime.sgml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index b9c4e611aaa..c9b3ea43054 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1318,6 +1318,22 @@ default:\ linkend="guc-max-files-per-process"/> configuration parameter to limit the consumption of open files. </para> + + <para> + Another kernel limit that may be of concern when supporting large + numbers of client connections is the maximum socket connection queue + length. If more than that many connection requests arrive within a very + short period, some may get rejected before the postmaster can service + the requests, with those clients receiving unhelpful connection failure + errors such as <quote>Resource temporarily unavailable</quote> or + <quote>Connection refused</quote>. The default queue length limit is 128 + on many platforms. To raise it, adjust the appropriate kernel parameter + via <application>sysctl</application>, then restart the postmaster. + The parameter is variously named <varname>net.core.somaxconn</varname> + on Linux, <varname>kern.ipc.soacceptqueue</varname> on newer FreeBSD, + and <varname>kern.ipc.somaxconn</varname> on macOS and other BSD + variants. + </para> </sect2> <sect2 id="linux-memory-overcommit"> [parent: d53ff6a44b32]