[적용됨] 최근 발생한 채널 이용 불가 현상에 대하여
길브리드 · 2023-03-29 14:22

안녕하세요 길브리드입니다.

금일 개발자 노트에서는 최근 류트서버에서 여러 차례 발생했던
채널 이용 불가 현상의 원인과 조치내용에 대하여 설명해 드리고자 합니다.
(최대한 명확한 설명을 위해 기술적인 용어가 포함되어 있음을 양해 부탁드립니다.)

[채널 이용 불가 현상]
최근 발생한 채널 이용 불가 현상은 마비노기 게임 서버 애플리케이션의 비정상 종료로 인해 발생한 것으로
시스템으로부터 확인한 원인은 힙 메모리 영역의 손상(이하, 힙 손상)입니다.
힙 손상은 운영체제로부터 할당받은 힙 메모리 영역에 대한 잘못된 사용으로 인해 발생하게 됩니다.
힙 손상에는 여러가지 케이스가 존재하지만, 이번 케이스의 경우
힙이 손상되는 시점과 동시에 비정상종료가 되지 않고, 임의의 시간이 흐른 뒤 게임 서버가 비정상 종료되는 케이스였습니다.
이 경우, 비정상 종료 시 추적 용도로 사용되는 메모리 덤프에서도
명확한 에러코드를 확인할 수 없기 때문에 추적에 다소 시간이 소요되었습니다.

[힙 손상 원인 추적 히스토리]
개발팀에서 진행한 힙 손상 추적 히스토리는 다음과 같습니다.
1. 23년 3월 14일 목요일 22시 49분, 류트서버 첫 힙 손상 발생.
2. 메모리 덤프를 통해 원인 확인이 불가하여 힙 손상이 발생하지 않았던 이전 패치와 최신 패치의 코드를 하나씩 비교하며 코드 검수 진행.
3. 2번 과정에서 최근에 작업된 부분 중 힙 손상을 발생시킬 만한 코드를 발견하지 못함.
4. 점차 코드 검수 영역을 확대하며 게임 서버 코드 전반을 검수.
5. 캐릭터 정보를 클라이언트에 동기화 하는 코드에서 원인 발견.
6. 캐릭터 정보 동기화 패킷의 크기가 65,535바이트를 넘어갈 경우, 버퍼 오버런으로 인한 힙 손상이 발생.
(원인이 된 코드는 2002년 작성된 코드로, 캐릭터 정보의 크기가 65,535바이트로 표현 가능한 범위 이내 일 것이라는 전제하에 작성됨)

즉, 콘텐츠 추가에 따른 동기화 패킷의 크기 증가로 인하여, 잠재되어 있던 문제점이 표출된 현상임을 확인할 수 있었습니다.
해당 부분의 코드는 23년 3월 21일 두 차례에 걸친 임시점검을 통해 수정 진행하였으며
점검 이후 현재까지 추가적인 힙 손상 오류는 발생하지 않고 있습니다.

[추가 조치 예정]
동기화 패킷의 사이즈는 서버 및 클라이언트의 성능과도 연관이 있어
다음과 같이 추가적인 작업을 진행할 예정입니다.

1. 캐릭터 정보 동기화 패킷 크기 관리
2. 주기적으로 불필요한 캐릭터 정보 삭제

좋은 소식으로 찾아 뵈었어야 하는데, 무거운 주제로 찾아 뵙게 되어 송구스럽습니다.
항상 안정적인 서비스를 위하여, 더욱 노력하는 마비노기가 되겠습니다.

감사합니다.

마비노기 개발자노트
제목 작성자 게시일
[테스트] 전투 밸런싱 공개 테스트
칼룬 · 2024-03-07
칼룬 2024-03-07
[적용됨] 달빛 섬 업데이트
칼룬 · 2024-01-11
칼룬 2024-01-11
[테스트] 파메스 유적 던전 공개 테스트
칼룬 · 2023-12-07
칼룬 2023-12-07
[테스트] RE:novation S5 공개 테스트 2차 업데이트
칼룬 · 2023-11-02
칼룬 2023-11-02
[테스트] RE:novation S5 공개 테스트
칼룬 · 2023-10-26
칼룬 2023-10-26
[테스트] 연대기 미션 공개 테스트 2차 업데이트
칼룬 · 2023-09-14
칼룬 2023-09-14
[테스트] 연대기 미션 공개 테스트
칼룬 · 2023-09-07
칼룬 2023-09-07
[적용됨] 아르카나 R2 업데이트
칼룬 · 2023-08-10
칼룬 2023-08-10
[적용됨] 아르바이트 개편 업데이트
칼룬 · 2023-07-13
칼룬 2023-07-13
[적용됨] 최근 발생한 채널 이용 불가 현상에 대하여
길브리드 · 2023-03-29
길브리드 2023-03-29
[적용됨] 글렌 베르나 업데이트
칼룬 · 2023-01-19
칼룬 2023-01-19
[개발중] 글렌 베르나 공개 테스트
칼룬 · 2022-12-29
칼룬 2022-12-29
[개발중] RE:novation S4 공개 테스트 개선 예정 사항
칼룬 · 2022-11-17
칼룬 2022-11-17
[개발중] RE:novation S4 공개 테스트
칼룬 · 2022-11-10
칼룬 2022-11-10
[개발중] 서버 통합 경매장 테스트서버 업데이트
길브리드 · 2022-10-27
길브리드 2022-10-27
[개발중] 64비트 클라이언트 테스트서버 업데이트
길브리드 · 2022-09-28
길브리드 2022-09-28
[적용됨] 넥스트 스텝업! 업데이트
칼룬 · 2022-09-22
칼룬 2022-09-22
[적용됨] 아르카나 업데이트
칼룬 · 2022-08-11
칼룬 2022-08-11
[적용됨] 교역 임볼릭 3 시즌 업데이트 수정 사항 반영
칼룬 · 2022-08-04
칼룬 2022-08-04
[테스트] 아르카나 업데이트 공개 테스트
칼룬 · 2022-07-21
칼룬 2022-07-21
이후
이전

About | Copyright | 공지사항
Email: devcrayon@gmail.com