혼자 만든 웹 MMORPG에 사람이 10배 몰리자 벌어진 일

54 minutes ago 1

이전에는 월 $6 VPS 한 대로 MMORPG 동접 1,000명에 도전해봤습니다라는 글에서 봇 부하 테스트를 진행했습니다. 당시 부하테스트용 봇은 주기적으로 타깃을 잡고 스킬을 사용하고 전리품을 얻었습니다. 하지만 채팅은 하지 않았고, 유저가 성장하며 사용하는 고레벨 스킬도 충분히 재현하지 못했습니다. 실제 동시접속자는 평소 20~30명에서 최대 239명까지 늘었을 때 당시 봇 테스트에서는 보이지 않던 부하가 드러났습니다. 실제 유저가 늘며 생긴 부하 봇 테스트 이후에 추가된 몇가지 내용들이 문제로 판단되었습니다 고레벨 스킬들이 아래와 같은 불필요한 부하를 생성하고 있었습니다 왕 직업의 광역 버프는 필드의 플레이어를 살펴 범위 안 아군에게 효과를 적용합니다. 전투 깃발 효과: 공격 속도 20%, 이동 속도 10% 증가 깃발 범위가 겹치면 같은 버프를 반복 확인하고 능력치를 다시 계산 개선: 버프 효과를 틱 단위로 모아 처리하고, 이미 적용된 버프는 재계산하지 않도록 변경 채팅 번역도 봇 테스트가 놓친 부하였습니다. 한국어·영어·일본어 채팅을 매 채팅 입력마다 LLM에 번역 요청 변경 후: 원문은 즉시 표시하고, 번역은 5초마다 최대 10문장씩 묶어 요청 전투 이벤트와 네트워크 최적화 위 대응으로 약간 개선은 되었지만 렉은 계속해서 발생하였습니다. 분석하던 중 네트워크 송수신용 메모리의 할당과 회수가 반복되며 스왑 입출력이 늘어나는 문제를 확인했습니다. vCPU 추가 할당과 CPU 부하를 늘리더라도 아래와 같은 추가 처리를 하여 네트워크 비용을 줄였습니다 기존에 모아서 보내는 타격, 스킬 이벤트를 묶고 최대한 공통 메세지는 한번에 직렬화 하여 여러 접속자에게 재사용 과감하게 일부 디테일 필드를 줄이고 압축을 적용하여 네트워크 전송량을 줄임 개선전 / 개선 후 100명이 전투 이벤트를 받는 로컬 테스트 결과입니다. 단건 전송: 29.80MB/s, CPU 기준값 100 이벤트 묶음: 28.23MB/s, CPU 22.5 필드 제거·묶음·압축: 2.69MB/s, CPU 54.7 증설 후에도 남은 지연 vCPU 증설과 긴급 코드 배포 후 CPU 사용률은 낮아졌지만, 50ms 주기의 게임 틱이 1초 넘게 걸리는 현상은 남았습니다. CPU steal이 30~66%까지 올라가는 것을 확인했습니다. 그날 밤 업체에 연락해서 물리 호스트를 옮긴 뒤에야 지연이 사라졌습니다. 게임 콘텐츠 조정 서버가 버티는 것만으로는 충분하지 않았습...

Read Entire Article