게임 렉 백서 › 증상별로 찾기
순간이동: 원인 47가지와 담당
다른 말: 워프, 텔레포트, 뚝 끊기고 튐
그림이 있는 원본 증상 사전으로 열기 →
캐릭터가 이동 과정 없이 멀리 떨어진 위치로 한 번에 옮겨집니다.
상대가 제자리에 서 있다가, 이미 멀리 간 위치에 갑자기 나타납니다.
대개 패킷이 한동안 끊겼습니다. 손실, 짧은 회선 끊김, 서버 멈춤, 외삽 실패를 봅니다. 다른 사람은 멀쩡한데 한 사람만 튀면 그 사람의 회선을 먼저 의심합니다.
이 증상을 만드는 원인
L1 클라이언트 게임 프로세스
- 과도한 외삽(데드 레커닝): 패킷이 오지 않는 동안 마지막 속도로 계속 움직여 보여 주다가, 틀린 걸 알고 되돌립니다. (게임개발팀·클라이언트 개발)
L2 클라이언트 OS·기기
- 수신 버퍼 넘침: 게임이 바빠서 소켓(OS가 제공하는 네트워크 송수신 인터페이스)에서 패킷을 늦게 꺼내면 OS 버퍼가 넘칩니다. (게임개발팀·클라이언트 개발)
- 와이파이 백그라운드 스캔: OS가 주변 와이파이를 찾으려고 주기적으로 채널을 옮겨 다니는 동안 통신이 잠깐 멈춥니다. (외부·외부)
L3 집 네트워크
- 와이파이 간섭·신호 약화: 신호가 약하거나 간섭이 생기면 무선 구간에서 몇 번씩 다시 보내느라 도착이 들쭉날쭉해집니다. (외부·외부)
- 버퍼블로트 (공유기 대기열): 가족 누군가 영상을 올리거나 큰 파일을 받으면 공유기 대기열에 수백 ms 분량의 패킷이 쌓이고, 게임 패킷도 그 뒤에서 기다립니다. (외부·외부)
- 기지국 핸드오버 (이동 중): 버스·지하철로 이동하면 기지국이 바뀌는 동안 통신이 끊깁니다. (외부·외부)
- 모바일 신호 약함·음영 지역: 엘리베이터·지하·건물 안쪽에서는 재전송이 늘고 속도가 떨어지며 결국 접속이 끊깁니다. (외부·외부)
- 5G↔LTE 잦은 전환 (5G 경계 지역): 5G 신호가 약한 건물 안이나 5G 경계 지역에서는 폰이 5G와 LTE를 자주 오가고, 바뀔 때마다 핑이 튀거나 통신이 잠깐 끊깁니다. (외부·외부)
L4 인터넷 회선
- 위성 인터넷 (저궤도·정지궤도): 위성 인터넷은 전파가 우주를 오가야 해서, 정지궤도 위성은 왕복만 0.5초가 넘고 Starlink 같은 저궤도 위성은 평소엔 빠르지만 경로를 다시 배정하는 순간 지연이 흔들리고 잠깐 끊기기도 합니다. (외부·외부)
- 피크 시간 피어링 구간 혼잡: 저녁 9~11시 무렵에는 영상 트래픽이 폭증해 통신사 간 연결 구간(피어링)이 붐비기 쉽습니다. (인프라팀·네트워크 인프라)
- 해저 케이블·국제 회선 장애: 해저 케이블이 끊기면 수리될 때까지 몇 주(길면 몇 달) 동안 먼 우회 경로로 돌아가고, 남은 회선은 붐빕니다. (외부·외부)
- BGP 경로 변경·수렴: 인터넷의 경로 정보가 바뀌어 다시 수렴하는 몇 초~몇십 초(드물게 몇 분) 동안 패킷이 유실됩니다. (인프라팀·네트워크 인프라)
- ECMP 경로 하나의 불량: 통신사와 데이터센터는 같은 목적지로 가는 경로를 여러 개 두고 연결마다 경로 하나를 정해 보냅니다. 경로 하나만 고장 나면 그 경로에 배정된 사람만 계속 렉을 겪습니다. (인프라팀·네트워크 인프라)
- 통신사 속도 제한·트래픽 관리: 데이터 사용량을 넘기거나 특정 트래픽을 관리하는 요금제에서는 패킷이 늦춰지거나 버려집니다. (외부·외부)
- 국가·통신사 단위 UDP 제한·패킷 검사: 일부 망은 특정 UDP 주소·포트를 막거나 UDP 속도를 제한하고 패킷 검사 장비가 알아보지 못하는 프로토콜을 걸러 냅니다. UDP로 통신하는 게임은 그 망에서 접속이 안 되거나 자주 끊깁니다. (외부·외부)
- 회선 품질 불량: 단자 접촉 불량이나 낡은 선, 모뎀 이상은 꾸준한 손실과 주기적인 회선 끊김을 만듭니다. (외부·외부)
- DDoS로 인한 공유 회선 포화: 게임사나 같은 망의 다른 곳을 향한 대량 공격이 공유 회선을 가득 채웁니다. (인프라팀·네트워크 인프라)
- VPN·게임 가속기 경유: VPN이나 게임 가속기를 켜면 패킷이 그 회사의 중계 서버를 거쳐 갑니다. 중계 서버가 멀거나 붐비면 오히려 느려집니다. (외부·외부)
L5 데이터센터 네트워크 장비
- DDoS 방어 경유·오탐: 공격을 막으려고 트래픽을 스크러빙 센터로 돌리면 경로가 길어지고 정상 사용자를 공격으로 오인해 막기도 합니다. (인프라팀·네트워크 인프라)
- 스위치 마이크로버스트: 여러 서버가 같은 순간 수천 명에게 패킷을 한꺼번에 보내면, 그 트래픽이 모이는 스위치 포트의 작은 버퍼가 1ms도 안 돼 넘칩니다. (게임개발팀·서버 개발)
- 데이터센터 회선 포화: 패치 배포·로그 전송·백업이 게임과 같은 회선을 쓰면 회선이 꽉 찹니다. (인프라팀·네트워크 인프라)
- 불량 케이블·포트 오류: 광모듈이나 케이블이 불량이면 그 경로를 지나는 패킷이 일정 비율로 깨집니다. (인프라팀·네트워크 인프라)
L6 서버 네트워크 카드
- NIC 인터럽트 단일 코어 집중: NIC가 패킷 도착 인터럽트를 CPU 코어 하나에만 보내면 그 코어가 병목이 됩니다. (인프라팀·서버 인프라)
- 링 버퍼 부족: NIC가 패킷을 잠시 담아 두는 링 버퍼가 작으면, 순간적으로 몰릴 때 버퍼가 넘쳐 패킷이 버려집니다. (인프라팀·서버 인프라)
- 클라우드 PPS 한도 초과: 클라우드 서버는 종류마다 초당 패킷 수·대역폭 한도가 있고 넘으면 조용히 버립니다. (인프라팀·서버 인프라)
- NIC 대역폭 포화: 1Gbps·10Gbps 카드의 한계까지 쓰면 송신 대기열이 길어지고 넘친 패킷은 버려집니다. (게임개발팀·서버 개발)
- 클라우드 호스트 점검·라이브 마이그레이션: 클라우드 사업자가 물리 서버(호스트)를 점검할 때 가상 머신을 다른 호스트로 옮기거나(라이브 마이그레이션) 잠시 멈춥니다. 그동안 서버 전체가 멈추고 멈춘 시간이 길면 연결이 끊깁니다. (인프라팀·서버 인프라)
L7 서버 OS (커널)
- 커널 소켓 버퍼 부족: 송수신 버퍼가 작으면 버스트 트래픽이 몰릴 때 UDP로 받은 패킷은 버려지고, TCP 송신은 버퍼에 여유가 없어 막힙니다. (인프라팀·서버 인프라)
- 서버 conntrack 테이블 포화: 리눅스 방화벽이 모든 연결을 기록하는 연결 추적(conntrack) 테이블이 한도에 닿으면 새 패킷을 버립니다. (인프라팀·서버 인프라)
L8 소켓과 프로토콜
L9 서버 게임 프로세스
- 브로드캐스트 폭증: 한 명의 움직임을 그를 보는 모두에게 보내면, 모인 인원의 제곱만큼 보낼 업데이트가 생깁니다. (게임개발팀·서버 개발)
- 패치로 트래픽 패턴이 바뀜: 새 콘텐츠·이펙트·동기화 항목이 패킷 크기와 빈도를 늘리면, 잘되던 서버가 패치 뒤부터 MTU·대역폭·패킷 수 한도에 걸립니다. (게임개발팀·서버 개발)
동기화 설계
- 클라이언트 권위: 각자 자기 결과를 결정하면 내 화면은 쾌적하지만 다른 사람 화면과 결과가 어긋나고 해킹에 약합니다. (게임개발팀·서버 개발)
- 롤백 넷코드의 예측 실패: 상대 입력을 예측해 먼저 보여 주다가 틀리면 되감아 다시 계산합니다. 핑이 클수록 되감는 폭이 커집니다. (게임개발팀·클라이언트 개발)
- 명령 동기화의 경로 계산 불일치: “여기로 가라”만 주고받고 경로는 양쪽이 각자 계산하면, 계산이 조금만 달라도 캐릭터나 몬스터가 다른 경로로 가다가 제자리로 끌려옵니다. (게임개발팀·서버 개발)
- 낮은 스냅샷 전송률: 서버가 위치 업데이트(스냅샷)를 1초에 몇 번만 보내면 보간 버퍼를 그만큼 길게 잡아야 해서, 다른 캐릭터를 더 먼 과거로 봅니다. (게임개발팀·서버 개발)
일부에게만 생기는 문제
- 느린 사람이 남의 화면에서 몰아서 움직임: 회선이 나쁜 사람의 입력은 들쭉날쭉 몰려서 서버에 도착합니다. 서버가 틱마다 받은 만큼 적용하면, 다른 사람 눈에는 그 캐릭터가 멈칫했다가 한 번에 여러 걸음을 갑니다. (게임개발팀·서버 개발)
- 몬스터 제어 권한이 느린 클라이언트에 있음: 서버 부하를 줄이려고 몬스터 이동 계산을 근처 플레이어 한 명의 클라이언트에 맡기는 게임이 있습니다. 그 사람 회선이 나쁘면 그 몬스터가 모두의 화면에서 이상하게 움직입니다. (게임개발팀·서버 개발)
- 기준 스냅샷 유실: 서버가 “지난번과 달라진 것만” 보내는 방식에서, 처음 한 번 보내는 전체 정보(기준)를 잃으면 그 뒤 변화분을 적용할 수 없습니다. (게임개발팀·서버 개발)
TCP 재전송의 근본 원인
- 무선 구간 손실: 와이파이와 모바일망은 무선 구간에서 몇 번 재전송하다가, 그래도 안 되면 패킷을 버립니다. 버려진 패킷은 TCP가 한참 뒤에 다시 보냅니다. (외부·외부)
- 송신 버스트로 얕은 버퍼 넘침: 서버가 틱마다 수천 명분 업데이트를 한순간에 몰아 보내면, 스위치의 작은 버퍼나 클라우드의 순간 한도가 1ms도 안 돼 넘쳐 일부가 버려집니다. (게임개발팀·서버 개발)
- 폴리서의 초과분 폐기: 통신사 요금제, 클라우드 인스턴스 한도, DDoS 방어 장비는 정해진 속도를 넘는 패킷을 대기열에 넣지 않고 즉시 버리기도 합니다. (인프라팀·네트워크 인프라)
- 물리 오류 (불량 선·광모듈·커넥터): 케이블 손상, 먼지 낀 광커넥터, 수명이 다한 광모듈은 비트 오류를 만들고 깨진 패킷은 장비가 조용히 버립니다. (인프라팀·네트워크 인프라)
- 수신 서버 호스트의 패킷 폐기: 패킷은 서버까지 왔는데 NIC의 링 버퍼(도착한 패킷을 잠시 담아 두는 버퍼)가 넘치거나, 커널의 수신 처리 코어가 포화되어 버려집니다. (인프라팀·서버 인프라)
- 중간 장비 처리 한도 초과 (방화벽·IPS·DDoS 방어): 방화벽, 침입 방지 장비(IPS), DDoS 방어 장비는 지나가는 패킷을 하나하나 검사합니다. 검사 능력을 넘는 순간부터 처리하지 못한 패킷을 버립니다. (인프라팀·네트워크 인프라)
- 경로 변경·ECMP 불량 경로: 인터넷 경로가 바뀌는 몇 초 동안, 또는 여러 ECMP 경로 중 불량인 경로에 배정된 연결에서 패킷이 사라집니다. (인프라팀·네트워크 인프라)
그림이 있는 원본 증상 사전 보기