From d9bbe17b7f68ff8b3768f2ed8a5520cfc40b125a Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 7 Jun 2010 10:40:48 +0200 Subject: [PATCH] [BUG] proxy: connection rate limiting was eating lots of CPU The rate-limit feature relied on a timer to define how long a frontend must remain idle. It was not considering the pending connections, so it was almost always ready to be used again and only the accept's limit was preventing new connections from coming in. By accounting for the pending connection, we can compute a correct delay and effectively make the frontend go idle for that (short) time. --- src/proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proxy.c b/src/proxy.c index 1ee4d6d057..7971a7ca9e 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -485,7 +485,7 @@ void maintain_proxies(int *next) goto do_block; if (p->fe_sps_lim && - (wait = next_event_delay(&p->fe_sess_per_sec, p->fe_sps_lim, 0))) { + (wait = next_event_delay(&p->fe_sess_per_sec, p->fe_sps_lim, 1))) { /* we're blocking because a limit was reached on the number of * requests/s on the frontend. We want to re-check ASAP, which * means in 1 ms before estimated expiration date, because the -- 2.39.5