From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id DF6AC2141D for ; Thu, 31 Jan 2019 10:51:54 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 4/6] doc/config: user documentation for limiters Date: Thu, 31 Jan 2019 10:51:51 +0000 Message-Id: <20190131105153.25272-5-e@80x24.org> In-Reply-To: <20190131105153.25272-1-e@80x24.org> References: <20190131105153.25272-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: I've relied on this feature to keep the VPS behind https://public-inbox.org/git/ from OOM-ing since 2016, so document it to ensure others can make use of low-end servers like I do. More limiters may become configurable for viewvcs and solver functionality (or we continue using the default one). --- Documentation/public-inbox-config.pod | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/Documentation/public-inbox-config.pod b/Documentation/public-inbox-config.pod index 23ebcc5..cad0c4e 100644 --- a/Documentation/public-inbox-config.pod +++ b/Documentation/public-inbox-config.pod @@ -91,6 +91,18 @@ C Default: none +=item publicinbox..httpbackendmax + +If a digit, the maximum number of parallel +L processes to allow for cloning this +particular inbox. + +If an alphanumeric value starting with a lowercase alphabetic +character is specified, the inbox will use a L +which can be shared by multiple inboxes. + +Default: 32 (using a default limiter shared by all inboxes) + =item publicinbox..coderepo The nickname of a "coderepo" section associated with the inbox. @@ -169,6 +181,53 @@ Default: none =back +=head2 NAMED LIMITER (PSGI) + +Named limiters are useful for preventing large inboxes from +monopolizing (or overloading) the server. Since serving git +clones (via L can be memory-intensive for +large inboxes, it makes sense to put large inboxes on a named +limiter with a low max value; while smaller inboxes can use +the default limiter. + +=over 8 + +=item publicinboxlimiter..max + +The maximum number of parallel processes for the given limiter. + +=back + +=head3 EXAMPLE WITH NAMED LIMITERS + + ; big inboxes which require lots of memory to clone: + [publicinbox "big1"] + mainrepo = /path/to/big1 + address = big1@example.com + httpbackendmax = big + [publicinbox "big2"] + mainrepo = /path/to/big2 + address = big2@example.com + httpbackendmax = big + + ; tiny inboxes which are easily cloned: + [publicinbox "tiny1"] + mainrepo = /path/to/tiny1 + address = tiny1@example.com + [publicinbox "tiny2"] + mainrepo = /path/to/tiny2 + address = tiny2@example.com + + [publicinboxlimiter "big"] + max = 4 + +In the above example, the "big1" and "big2" are limited to four +parallel L processes between them. + +However, "tiny1" and "tiny2" will share the default limiter +which means there can be 32 L processes +between them. + =head1 ENVIRONMENT =over 8 -- EW