작금의 디아블로2 레저렉션의 서버문제

Jeheon Park·2021년 10월 15일
0

디아블로2의 서버문제가 상당히 핫한데요. 서버개발 하시는 분들이 보시면 좋을거 같아서 올려드립니다. 사건인 즉슨, 디아2는 글로벌 데이터베이스한개(모든캐릭터의 정보를 저장하고 있음)와 여러곳의 로컬 데이터베이스 여러개가 있는데 인게임 정보들은 로컬로 백업 데이터는 글로벌 데이터베이스로 가는 구조입니다. 10월 9일 토요일에 서버가 다운되었고 이것이 업데이트와 맞물려서 글로벌 디비에 과부하가 걸려 롤백(아이템 날라감...)을 할수 밖에 없었다고 합니다. 현재 문제가 되는 쿼리(쿼리가 중요했네요.)를 개선 했다고 합니다.

해당 사태의 가장큰 이유는 필터에 있답니다. 게임 계정의 상태와 디비연결 생성 참가등이 "싱글톤"으로 구성되어 있었다고 합니다. 블리자드 쪽도 미리 알고 있어서 성능향상을 대비 했다는데, 부하가 너무 심했나 봅니다. 그리고 또, 상당히 재밌는 사실이 있는데 롤이나 피파와 다르게 디아는 메피런, 바알런 같이 빨리 보스만 잡고 방을 닫고 다시파는 과정이 있지요. 하루에도 메피스토는 몇만번 죽으니까 해당 데이터가 하나뿐인 글로벌 db의 커넥션 풀을 말려버리고 싱글톤인 인스턴스는 터져 나갔겠네요.

글로벌 서비스를 조금이나마 볼수 잇어서 즐거운 노트였습니다.

해결책은 3개정도 있다고 합니다.
1.레이트제한 (방만들기 제한): 요거는 단기 해결인거 같습니다.
2. 대기열: 저는 대기열 싫어하는데 어쩔수 없다면...
3. 레거시 코드를 버리고 MSA를 도입하겠다고 합니다.: 요거는 개발자들이 힘들겠네요.

출처

https://us.forums.blizzard.com/en/d2r/t/diablo-ii-resurrected-outages-an-explanation-how-we%E2%80%99ve-been-working-on-it-and-how-we%E2%80%99re-moving-forward/28164

profile
개발자

0개의 댓글