한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › L13 서버 구성과 운영

연쇄 장애 Cascading failure

원인 ID in-cascade · 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·네트워크 인프라

그림과 실험이 있는 원본 카드로 열기 →

한 서비스가 느려지면 그걸 부르는 서버들이 응답을 기다리며 묶이고 상관없는 기능까지 멈춥니다.

왜 DB·인증 같은 한 서비스가 느려짐 → 그러면 호출하는 서버들의 스레드와 연결이 응답을 기다리며 묶이고 실패한 요청의 재시도가 부하를 더함 → 화면에서는 상관없어 보이는 기능까지 전부 느려지거나 멈춤

증상
멈춤, 입력 지연, 접속 불가·무한 로딩
요인
정체
누가 겪나
서버 전체
언제
사람이 몰릴 때, 가끔 무작위로
담당
주 담당 게임개발팀·서버 개발 · 함께 인프라팀·네트워크 인프라
게임개발팀 할 일
모든 호출에 타임아웃, 서킷 브레이커, 기능별 격리(벌크헤드), 재시도는 간격을 늘리며 횟수 제한, 헬스체크 응답은 바쁜 작업과 분리.
인프라팀 할 일
로드밸런서 헬스체크가 잠깐 느린 서버를 바로 빼지 않도록 실패 횟수·간격에 여유, 한꺼번에 빠지는 서버 수 제한.
그래프에서는
한도에 닿아 평평해짐 · 서비스별 응답 시간·오류율, 스레드·커넥션 사용 수
확인할 곳
서비스별 응답 시간·오류율·재시도 수를 시간축을 맞춰 한 화면에 놓고 가장 먼저 느려진 곳을 찾음. 로드밸런서 뒤라면 대상 응답 시간(AWS ALB는 TargetResponseTime), 대상의 5xx 수(HTTPCode_Target_5XX_Count), 비정상으로 빠진 대상 수(UnHealthyHostCount)
이러면 맞음
한 서비스의 지연이 먼저 오르고 뒤이어 그 서비스를 부르는 쪽의 스레드·커넥션 사용 수가 한도에 붙으며 오류가 다른 서비스로 번지고, 재시도 수와 빠진 대상 수가 함께 늘어남
이러면 아님
여러 서비스가 같은 순간 함께 느려졌다면 공용 자원(DB, 네트워크, 호스트) 장애부터 봄
확인 수단
인프라 도구로 확인(게임 코드 불필요)
더 알아보기
헬스체크(살아 있는지 확인하는 검사)도 연쇄를 키웁니다. 바쁜 서버가 검사에 늦게 답하면 로드밸런서가 멀쩡한 서버를 빼 버리고 그 트래픽이 남은 서버로 몰려 다음 서버도 늦어집니다.
실제 사례
Riot Games 2020: League of Legends 유럽·브라질 서버의 엣지 호스트 과부하
Riot Games 2021: League of Legends EUW 5시간 장애: 부가 DB 하나가 서버 전체를 멈춤
Roblox 2021: Roblox 73시간 장애: 서비스 디스커버리(Consul) 클러스터의 경합
AWS 2021: AWS us-east-1 내부 네트워크 혼잡
AWS 2025: AWS us-east-1 DynamoDB DNS 장애와 긴 복구

출처

  1. Site Reliability Engineering, Chapter 22: Addressing Cascading Failures Google
    과부하 서버가 헬스체크에 실패해 빠지면 남은 서버에 부하가 몰리고 재시도가 부하를 키움, 재시도 횟수 제한·무작위 지수 백오프·데드라인 권장
  2. Circuit Breaker Pattern Microsoft Azure
    타임아웃까지 막힌 요청이 스레드·DB 연결을 점유해 상관없는 기능까지 실패시킴, 정해진 시간 안에 실패가 쌓이면 호출을 바로 거부
  3. Timeouts, retries, and backoff with jitter AWS
    Amazon Builders' Library. 5단 호출에서 층마다 3번씩 재시도하면 DB 부하가 243배, 재시도는 한 곳에서만 하고 토큰 버킷으로 제한
  4. CloudWatch metrics for your Application Load Balancer AWS
    TargetResponseTime(요청이 로드밸런서를 떠나 대상이 응답을 시작할 때까지 걸린 시간), HTTPCode_Target_5XX_Count(대상이 낸 5xx 수), UnHealthyHostCount(비정상 대상 수)

함께 보면 좋은 원인

같은 층: L13 서버 구성과 운영

같은 증상(멈춤)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기