Setup

A product catalog API serves about 4,000 requests per second at peak. Reads go through a cache cluster with a 97% hit rate. Cache misses go to a primary database with two read replicas.

Retries happen at two layers:

  • Clients (the mobile app and the web backend) retry a failed request up to 3 times, 100 ms apart.
  • The API’s database client retries a timed-out query up to 2 times. The query timeout is 2 seconds.

At 14:02 a cache node failed and the cluster failed over to a replica. The failover finished in about 40 seconds, but the new primary started with an empty cache.

At 14:03 you’re paged: API error rate 35%, p99 latency 9 seconds.

Stages

Stage 1: The first five minutes

  • The cache reports healthy since 14:03. Hit rate is 12% and climbing very slowly.
  • Database CPU is at 98% on the primary and both replicas.
  • Database connections are at the pool maximum on every API instance.
  • The API is receiving 11,000 requests per second, almost 3× normal peak.
  • CDN logs show user traffic is flat: no spike in real users.

Commit before you see the outcome

Your call

The cache recovered within a minute, but the API is still failing 20 minutes later. What is keeping it down, and what would you do first to bring it back?

Move the slider (or use the arrow keys) to set it. 0% is a pure guess; 100% means you'd bet on it.

After you reveal, your answer and confidence are locked. That's the point.