본문 바로가기
Dev/Article

[용어/개념] Thundering herd problem

by Luigi.yoon 2023. 12. 7.

천둥이 치면 소떼가 뛴다

 

Thundering herd problem 정의

여러 클라이언트(또는 프로세스, 스레드)가 동시에 하나의 리소스(또는 이벤트)에 접근하려고 대기하다가, 그 리소스가 사용 가능해지자 모두 동시에 깨어나서 접근을 시도해 시스템이 과부하 상태에 빠지는 현상

 

 

 

 

대표적인 시나리오

  • 캐시 만료 시 다중 요청(Cache Stampede): 캐시 TTL(Time-To-Live)이 만료되면, 수많은 요청이 동시에 백엔드(DB/API)를 직접 호출합니다.
  • API 재시도 폭주: 장애 복구 후 클라이언트가 동시에 재시도하여 서버를 과부하시킵니다.
  • 서버 재시작 후 연결 폭주: 다수의 클라이언트가 동시에 재연결을 시도합니다.

 


 

대표적인 해결책

  • Exponential Backoff: 재시도 시 대기 시간 증가
  • Mutex / Lock: 한 요청만 리소스 접근 허용
  • Rate limiting: 동시 접근 요청 수 제한
  • Token bucket / Leaky bucket: 일정량의 요청만 처리
  • Leader election: 하나의 대표만 리소스 접근