Hi community,

      Currently APISIX uses Redis to do cluster-level rate limit, it calls
Redis for every request to check whether the rate control is broken.

      Problem is that Redis becomes an important dependency in the critical
path of request processing. So if Redis is under maintenance, every request
will have to wait for the Redis connection to timeout. The timeout will
slow down request processing of APISIX and might cause other issues due to
request processing are actually pending.

      Proposal:

   1. Start a backend process to check the availability of Redis.
   2. If Redis is unavailable, all operations on Redis will fail fast.
   3. If Redis is back to normal, all operations on Redis will hit Redis
   again.
   4. The check health interval can be configured in config.yaml.

Reply via email to