Sixty Seven Percent Rejected

Client-side adaptive throttling: each client tracks, over the last two minutes, requests (attempts it made at the application layer) and accepts (attempts the backend accepted). Before sending, it drops a request locally with probability

preject=max⁡(0, requests−K⋅acceptsrequests+1)p_{\text{reject}} = \max\left(0,\ \frac{\text{requests} - K \cdot \text{accepts}}{\text{requests} + 1}\right)

A client's window reads requests = 3,000 and accepts = 900. The default multiplier is K=2K = 2. The team then lowers KK to 1.11.1 to protect the backend harder.

What are the two rejection probabilities, and what does the change buy?

A

About 70%70% at both settings, from (3000−900)/3001(3000 - 900)/3001, because KK scales the length of the observation window rather than the accept count.

B

About 40%40% at K=2K=2 and about 67%67% at K=1.1K=1.1. The client drops requests before they leave, so the backend stops paying even the cost of rejecting them.

C

About 67%67% at K=2K=2 and about 40%40% at K=1.1K=1.1: a smaller KK means the client tolerates a wider gap before it starts throttling.

D

About 40%40% and about 67%67%, but the backend gets no relief, because the client still issues every request and only discards the response.