DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk4 min

Our Rate Limit Punished Everyone Except the Customer Causing the Problem

A global API rate limit can preserve service capacity yet leave quieter customers throttled. Sergey Shinder’s reported incident shows why limits need deliberate scope, allocation rules and per-customer visibility.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A shared rate limit can keep an API’s total traffic within capacity while letting one customer consume the available requests and leave everyone else throttled. That is the failure Sergey Shinder describes: the limit protected the service overall, but did not allocate capacity fairly. His account offers a useful design lesson, though its incident figures are the author’s report and have not been independently verified.

What happened in the reported incident

In a DEV Community article, author Sergey Shinder says a customer began a historical API backfill. Within ten minutes, 112 other customers were being rejected. The edge was using one shared token bucket configured for 2,000 requests per second across the service, rather than separate buckets keyed to customers.

As an Amazon Associate I earn from qualifying purchases.

In a shared token bucket, requests draw from the same pool. As tokens become available, a caller producing sustained high traffic can consume them before quieter callers make their requests. Shinder says the backfill ran at around 40 requests per second. He reports that availability for the hour was 91% in aggregate, but closer to 30% for the 112 customers who were not doing anything unusual. Those are figures reported in his account, not independently corroborated service telemetry.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why a service-wide limit did not make allocation fair

A global cap answers a capacity question: how much traffic should the service accept in total? It does not answer an allocation question: how much of that capacity should each customer be able to use? If every request competes for one pool, the caller that keeps arriving fastest can dominate it. The cap may still constrain total load, yet individual customers can experience very different outcomes.

As Shinder puts it, “A limit protects the service. It says nothing about who gets what, and where you have not said it, the answer is whoever pushes hardest.”

How Shinder says the limits were changed

Shinder reports replacing the single shared customer-facing bucket with per-customer buckets sized from each customer’s trailing 30-day peak multiplied by a factor. The global bucket remained as a backstop to protect total service capacity. He also describes distinguishing interactive calls from batch work, identifying the limit responsible for a rejection, tracking throttling by customer, and displaying the worst tenant’s success rate alongside aggregate availability.

These are the author’s reported design choices, not universal defaults. A per-customer policy needs a defensible sizing factor and a reliable way to identify which customer made each request. A trailing peak can reflect a real usage pattern, but it can also preserve capacity for a past burst; the multiplier and measurement window are policy decisions that should be monitored and adjusted against actual capacity and customer needs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose the limit scope deliberately

“Rate limit” is not one fixed scope. Envoy’s current local rate-limit documentation, which identifies version 1.40.0-dev, describes token buckets that can apply to routes or virtual hosts. Depending on configuration, a bucket may be shared across workers in an Envoy process or allocated per downstream connection. Those scopes have different effects: a process-wide bucket pools traffic handled by that process, while connection-level allocation does not itself establish a customer-wide quota.

Envoy also documents descriptors that match request attributes such as caller cluster and path, allowing distinct buckets for matching combinations and a default bucket for other requests. This illustrates a way to scope limits by caller or request class; it does not establish that Shinder used Envoy or that his exact design was tested with it.

For any implementation, write down what identity the policy uses and what requests share a bucket. A limit keyed to a customer can isolate customers only if the system consistently maps requests to the right customer. If identity is missing, ambiguous, or shared across unrelated customers, the configured scope may not match the fairness policy operators intend.

Balance customer isolation with service protection and priority

Different controls solve different problems. A per-customer bucket limits one customer’s ability to consume shared capacity; a global bucket can still cap the service’s total accepted traffic. Workload classes add another policy dimension: interactive requests can receive priority over batch jobs from the same customer, but token buckets do not create that priority automatically. Operators must define which classes outrank others and how the service behaves when capacity is scarce.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Control What it helps address What it does not decide by itself
Shared global bucket Caps traffic against a service-wide threshold. How capacity is divided among customers or request classes.
Per-customer bucket Separates one customer’s allowance from another’s. How to identify customers and size each allowance.
Workload-class limits or priority Can protect interactive work from batch traffic under an explicit policy. Which work should rank higher and what happens during contention.
Global backstop plus customer buckets Combines customer isolation with a limit on total service traffic. How to allocate capacity when the global backstop itself is reached.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Make throttling explainable and visible

When Envoy’s local rate-limit filter rejects a request, it returns HTTP 429 by default; the response status is configurable. The filter can optionally emit a Retry-After header. Envoy documents this delay as time until the next token is available in the rejecting bucket, subject to the configured behavior. It is not a promise that an entire customer account or the service will be fully usable after that interval.

Best Value
Reading Journal for Book Lovers | Log Book to Summarize, Review and Rate the Books you've Read | A5 (Rainbow)
  • Organize Your Thoughts: Keep all your book reviews and stats in one place, making it easier to look back and reflect on your reading history.
  • Enhance Your Reading Experience: Detailed review sections help you dive deeper into each book and appreciate its nuances.
  • Stay Motivated: Reading challenges and daily trackers ensure you stay on top of your reading goals and progress.

A useful rejection response should make clear which limit was reached and provide retry guidance that matches that limit. Operators also need enough observability to see whether a limit is protecting total capacity or disproportionately affecting one customer. Envoy documents counters for requests checked, rate-limited decisions, and enforced rejections. Shinder additionally reports tracking the throttled fraction per customer and showing the worst tenant’s success rate next to aggregate availability. Aggregate availability alone can conceal a severe problem for an individual tenant.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.