주 담당 인프라팀·네트워크 인프라 · 함께 게임개발팀·클라이언트 개발, 게임개발팀·서버 개발
게임개발팀 할 일
클라이언트: 가장 짧은 유휴 타임아웃의 절반 이하 간격으로 하트비트 보내기(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 매핑 만료”