출시·점검 직후 접속이 몰리면 로그인 대기열이 상한에 닿아 새 대기를 거절하고, 기다리던 유저는 잠깐 끊긴 사이 자리를 잃어 맨 뒤로 돌아갑니다.
왜 로그인 서버가 한 번에 받을 수 있는 인원보다 접속하려는 사람이 많아 대기열을 두고, 너무 길어지면 서버를 지키려고 새 대기를 거절함 → 그러면 대기열이 길수록 기다리는 시간이 늘고 그동안 와이파이·모바일망이 잠깐만 끊겨도 대기 자리를 잃음 → 화면에서는 접속 불가·무한 로딩, 대기 중 오류와 함께 게임 종료, 다시 맨 뒤에서 기다림
서버: 대기열 상한을 로그인 서버가 실제로 처리할 수 있는 양에 맞추기, 대기 중 끊긴 유저의 자리를 일정 시간 지켜 주기(재접속 유예), 순번과 예상 대기 시간 보여 주기, 대기열 길이·거절 수·대기 중 끊김 수를 지표로 남기기. 클라이언트: 대기 중 끊기면 게임을 끄지 않고 같은 자리로 자동 재접속, 재시도 간격은 지수 백오프와 지터로 흩뜨리기.
인프라팀 할 일
서버 장비·OS: 출시 전 부하 시험으로 로그인·로비 서버의 처리 한도를 재고 출시 때는 예비 장비를 미리 붙일 수 있게 준비, 대기열 지표를 접속 시도 수와 같은 그래프로 보기.
수치 감각
2021년 FINAL FANTASY XIV 확장팩 출시 때는 논리 데이터센터마다 대기 인원이 17,000명을 넘으면 새 대기를 거절했습니다(Error 2002). 대기 중 연결이 끊기면 로비 서버가 수십 초~1분 기다려 주고 그 안에 다시 붙으면 대기열 중간부터 이어 가게 했습니다.
그래프에서는
한도에 닿아 평평해짐 · 로그인 대기열 길이, 상한 도달로 거절한 수, 대기 중 끊김 수
확인할 곳
로그인·로비 서버가 남기는 대기열 길이, 평균 대기 시간, 상한 도달로 거절한 수, 대기 중 끊김 수를 접속 시도 수와 같은 그래프에 놓고 봄
이러면 맞음
출시·점검 직후 대기열 길이가 상한에 닿아 평평해지는 동안 거절 수가 늘고, 대기 중 끊김이 와이파이·모바일망 유저에게 몰림
이러면 아님
대기열은 짧은데 로그인이 느리면 DB(db-login-storm)나 운영체제의 접속 대기열(so-backlog) 쪽
확인 수단
게임 서버·클라이언트의 로그·지표가 필요
더 알아보기
로그인이 몰려 DB가 느려지는 경우는 “로그인 폭주와 N+1 쿼리”, 운영체제의 접속 대기열이 넘치는 경우는 “접속 대기열(backlog) 넘침”에서 다룹니다. 이 항목은 게임이 일부러 두는 로그인 대기열의 설계 문제입니다. 대기열 상한은 로그인 서버를 지키는 안전장치라 없앨 수 없습니다. 넘치는 요청을 일찍 거절해야 처리할 수 있는 요청을 계속 처리할 수 있습니다. 대신 거절과 끊김이 유저에게 주는 손해를 줄여야 합니다. 대기열이 길어질수록 와이파이·모바일망처럼 회선이 불안정한 유저에게 오류가 몰립니다.
Response to Congestion (as of Dec. 11)Square Enix 논리 데이터센터마다 대기 인원이 17,000명을 넘으면 로그인 서버가 다운되지 않게 새 대기를 거절(Error 2002), 대기 중 끊기면 로비 서버가 수십 초~1분 기다려 그 안에 다시 붙으면 대기열 중간부터, 넘기면 맨 뒤로