The dangerous part of a thundering herd is that individually reasonable behavior becomes destructive at scale: thousands of clients notice the same expiration or failure and retry simultaneously. Request coalescing or single-flight prevents duplicate work, while TTL jitter reduces synchronized cache expiration. Stale-while-revalidate can also keep serving acceptable data while one worker refreshes the cache. For retries, exponential backoff is not enough on its own—adding randomness is essential so clients do not remain synchronized. I would also monitor concurrent requests, cache-miss bursts, retry volume, and downstream saturation, because average latency may look normal until the herd has already started.