From 74bb661ee521d275b636eda4a5caeabb9e387e75 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 12 Apr 2023 10:17:42 +0000 Subject: listener: support multi-accept like nginx While accepting a single connection at-a-time is likely best for multi-worker and/or load-balanced deployments; accepting multiple connections at once should be less bad on overloaded single-worker systems. We can't automatically pick the best value here since worker counts are dynamic via SIGTTIN/SIGTTOU. Process managers (e.g. systemd) can also spawn multiple instances sharing a single listener with no knowledge sharing between listeners. --- Documentation/public-inbox-daemon.pod | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Documentation') diff --git a/Documentation/public-inbox-daemon.pod b/Documentation/public-inbox-daemon.pod index 81a79a10..71216833 100644 --- a/Documentation/public-inbox-daemon.pod +++ b/Documentation/public-inbox-daemon.pod @@ -115,6 +115,23 @@ per-listener C option. The private key may be concatenated into the path used by the cert, in which case this option is not needed. +=item --multi-accept INTEGER + +By default, each worker accepts one connection at-a-time to maximize +fairness and minimize contention across multiple processes on a +shared listen socket. Accepting multiple connections at once may be +useful in constrained deployments with few, heavily-loaded workers. +Negative values enables a worker to accept all available clients at +once, possibly starving others in the process. C<-1> behaves like +C in nginx; while C<0> (the default) is +C in nginx. Positive values allow +fine-tuning without the runaway behavior of C<-1>. + +This may be specified on a per-listener basis via the C +per-listener directive (e.g. C<-l http://127.0.0.1?multi-accept=1>). + +Default: 0 + =back =head1 SIGNALS -- cgit v1.2.3-24-ge0c7