Ray Mattingly created HBASE-29351:
-------------------------------------
Summary: Quotas: adaptive wait intervals
Key: HBASE-29351
URL: https://issues.apache.org/jira/browse/HBASE-29351
Project: HBase
Issue Type: Improvement
Reporter: Ray Mattingly
Assignee: Ray Mattingly
We've been using Quotas heavily at my day job, particularly user throttles. You
can read more about our setup
[here|https://product.hubspot.com/blog/hbase-share-resources].
We have hundreds of clusters with a wide variety of usage patterns; we've found
it difficult to find a `hbase.quota.rate.limiter.refill.interval.ms` that
perfectly blends optimistic enough retries (to make fully utilizing the quota
easy) and sufficiently pessimistic backoffs (to avoid hotspotting RPC layers
with doomed retries) across the board and out-of-the-box.
For some background, when a request is throttled our RateLimiters will return
the backoff millis that must be waited in order for the RateLimiter to service
the given request's estimated workload in a single threaded environment. This
falls apart for two reasons: clients are rarely single threaded, and estimated
workloads are often wrong.
To make usage and configuration easier, I'm suggesting that we add support for
"adaptive wait intervals" to the FixedIntervalRateLimiter. This would involve
introducing a multiplier for the wait interval which grows when we throttle
multiple times in a given refill interval, or shrinks when we go many refill
intervals without throttling. The result would be wait interval suggestions
that provide smarter backoffs designed to fully utilize, but not oversubscribe,
the allowance.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)