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

게임 렉 백서 › L5 데이터센터 네트워크 장비

로드밸런서 유휴 타임아웃 Load balancer idle timeout

원인 ID dc-lb-idle · 주 담당 인프라팀·네트워크 인프라 · 함께 게임개발팀·클라이언트 개발, 게임개발팀·서버 개발

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

로드밸런서는 유휴 연결을 일정 시간 뒤 지웁니다. 게임은 연결이 유지된다고 여기다가 접속이 끊깁니다.

왜 플레이어가 한동안 아무 패킷도 안 보냄(대화창, 자리 비움) → 그러면 로드밸런서가 유휴 연결을 정리(흔한 기본값 60~350초) → 화면에서는 다시 움직이는 순간 접속 끊김

증상
접속 끊김
요인
손실
누가 겪나
나만, 서버 전체
언제
가만히 있다가
담당
주 담당 인프라팀·네트워크 인프라 · 함께 게임개발팀·클라이언트 개발, 게임개발팀·서버 개발
게임개발팀 할 일
클라이언트: 가장 짧은 유휴 타임아웃의 절반 이하 간격으로 하트비트 보내기(ALB 60초 뒤라면 30초 이하), 끊기면 자동 재접속. 서버: 하트비트에 응답하고 일정 시간 못 받으면 연결을 먼저 정리, 세션 토큰으로 이어 받기.
인프라팀 할 일
경로에 있는 로드밸런서의 유휴 타임아웃 값을 확인해 게임팀에 공유하고 필요하면 늘리기.
수치 감각
AWS ALB는 60초, NLB는 TCP 350초·UDP 120초, Azure Load Balancer는 TCP 4분이 기본값입니다. ALB와 NLB의 TCP 값은 바꿀 수 있지만 NLB의 UDP 120초는 바꿀 수 없습니다. ALB는 시간이 되면 서버 쪽 연결도 닫지만 NLB는 조용히 지워 서버가 모르는 채로 남기 쉽습니다.
그래프에서는
연결이 한꺼번에 끊김 · 끊김 수, 끊기기 전 유휴 시간
확인할 곳
경로에 있는 로드밸런서의 유휴 타임아웃 설정값을 확인하고 끊긴 연결마다 마지막 패킷 뒤 끊기기까지 걸린 시간을 모아 봄. AWS NLB면 CloudWatch의 TCP_ELB_Reset_Count(로드밸런서가 보낸 RST 수)도 봄
이러면 맞음
끊긴 연결의 유휴 시간이 설정값(ALB 60초, NLB TCP 350초 등) 바로 뒤에 몰리고 그 시간보다 오래 가만히 있다 움직이면 재현됨. NLB는 그 시각에 TCP_ELB_Reset_Count가 늘어남
이러면 아님
유휴 시간과 상관없이 끊기면 이 원인이 아님. 로드밸런서 없이 바로 붙는 서버에서 350초 근처로 몰리면 “클라우드 보안 그룹의 연결 추적 만료”, 유저 집 공유기 쪽이면 “NAT 매핑 만료”
확인 수단
인프라 도구로 확인(게임 코드 불필요)

출처

  1. Edit attributes for your Application Load Balancer AWS
    ALB 유휴 타임아웃 기본 60초(1~4,000초), 클라이언트·대상 연결이 이 시간 동안 조용하면 로드밸런서가 연결을 닫음
  2. Network Load Balancers AWS
    NLB TCP 유휴 기본 350초(60~6,000초), 지나면 추적만 멈추고 그 뒤 데이터가 오면 RST, UDP 흐름 120초는 변경 불가
  3. Configure load balancer TCP reset and idle timeout Microsoft Azure
    Azure Load Balancer 유휴 타임아웃 기본 4분(4~100분), 넘으면 세션 유지 보장 없음, TCP 리셋은 선택 설정
  4. CloudWatch metrics for your Network Load Balancer AWS
    TCP_ELB_Reset_Count: 로드밸런서가 만들어 보낸 RST 패킷 수

함께 보면 좋은 원인

같은 층: L5 데이터센터 네트워크 장비

같은 증상(접속 끊김)의 다른 층 원인

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