]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[OPTIM] maintain_proxies: only wake up when the frontend will be ready
authorWilly Tarreau <w@1wt.eu>
Fri, 6 Mar 2009 07:27:10 +0000 (08:27 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 6 Mar 2009 07:27:10 +0000 (08:27 +0100)
It's not needed to try to check the frontend's freq counter every
millisecond, we can precisely compute when to wake up.

src/proxy.c

index 28bcfa01f1b25278981c34687c58f56b00d9aa77..420c1ab8c66b9f9bcea29a3bcdb9bd5a17442066 100644 (file)
@@ -383,10 +383,13 @@ void maintain_proxies(int *next)
                        if (p->fe_maxsps && read_freq_ctr(&p->fe_sess_per_sec) >= p->fe_maxsps) {
                                /* 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 because the timer will have settled down. Note
-                                * that we may already be in IDLE state here.
+                                * means in 1 ms before estimated expiration date, because the
+                                * timer will have settled down. Note that we may already be in
+                                * IDLE state here.
                                 */
-                               *next = tick_first(*next, tick_add(now_ms, 1));
+                               int wait = 1000 / p->fe_maxsps - 1;
+                               wait = MAX(wait, 1);
+                               *next = tick_first(*next, tick_add(now_ms, wait));
                                goto do_block;
                        }