주 담당 인프라팀·네트워크 인프라 · 함께 게임개발팀·서버 개발, 게임개발팀·클라이언트 개발
게임개발팀 할 일
서버: 로그인 대기열 시스템으로 한꺼번에 몰리는 접속 조절, 짧은 연결을 반복하지 않게 연결 재사용, 하트비트가 끊긴 연결은 먼저 정리(죽은 연결이 세션 테이블을 오래 차지하지 않게). 클라이언트: 가장 짧은 유휴 타임아웃의 절반 이하 간격으로 하트비트 보내기, 끊기면 자동 재접속하되 재시도 간격을 늘려 가며 무작위로 분산(한꺼번에 다시 몰리지 않게).
인프라팀 할 일
세션 테이블 크기 늘리기, 짧게 끝난 연결 빨리 정리(종료된 세션의 타임아웃 단축), 유휴 세션 타임아웃을 줄일 때는 그 값을 게임팀에 알려 하트비트 간격 맞추기, 공격 차단, 세션 수 사용률 경보.
그래프에서는
한도에 닿아 평평해짐 · 방화벽 세션 수, 새 연결 실패 수
확인할 곳
방화벽 장비의 동시 세션 수를 세션 한도와 함께 그래프로 보고 장비 로그에서 세션을 만들지 못해 버린 기록을 찾음. 리눅스 방화벽이면 nf_conntrack_count를 nf_conntrack_max와 비교하고 dmesg의 “nf_conntrack: table full, dropping packet”을, AWS 인스턴스면 ethtool -S의 conntrack_allowance_exceeded를 봄
이러면 맞음
세션 수가 한도에서 평평해진 시각부터 새 연결 실패가 늘고 세션 생성 실패 기록이나 폐기 카운터가 함께 늘어남
이러면 아님
세션 수가 한도에 한참 못 미치는데 접속이 안 되면 “접속 대기열(backlog) 넘침”이나 로그인 서버 쪽. 유휴 연결만 끊기면 “클라우드 보안 그룹의 연결 추적 만료”
확인 수단
인프라 도구로 확인(게임 코드 불필요)
출처
Netfilter Conntrack Sysfs variablesLinux kernel 연결 추적 테이블의 최대 항목 수(nf_conntrack_max), 종료 중인 연결의 유지 시간(TIME_WAIT·FIN_WAIT 기본 120초), 성립된 TCP 기본 5일, 현재 항목 수(nf_conntrack_count)