(게임) 서버 정기 점검이 필요한 이유

…반쯤은 유머니 적당히 해석합시다(먼산).

후배인 (전직) 게임 개발자 i 모군(대역;가명)과의 대화 :$

[18:38:26]	<i>	 먼가 만들것좀주실분 ㅠ [..]
[18:38:54]	<rein>	...
[18:38:58]	<rein>	자동 코딩 머신이 필요함
[18:39:07]	<rein>	기왕이면 멀티스레드 응용에서 레이스 컨디션도 좀 잡아주고
[18:39:11]	<rein>	데드락 프리딕션도 좀 해주고
[18:39:12]	<rein>	...
[18:39:20]	<i>	 ㅇㅇ
[18:39:21]	<i>	 저도필요함
[18:39:31]	<i>	 쓰레드기능은 없어도괜찮음
[18:39:40]	<rein>	아 안돼
[18:39:41]	<rein>	...
[18:39:57]	<rein>	new BYTE[ length ]
[18:39:58]	<rein>	해놓고
[18:40:04]	<rein>	또 new BYTE[ length ]
[18:40:05]	<rein>	하고 있네
[18:40:06]	<rein>	...
[18:40:10]	<rein>	(같은 포인터에 할당)
[18:40:11]	<i>	 괜찮아요
[18:40:13]	<i>	 안죽으니까
[18:40:18]	<rein>	결국엔 죽어
[18:40:18]	<rein>	...
[18:40:23]	<rein>	하드 긁다 큐 뻑남
[18:40:32]	<i>	 ㅇㅇ
[18:40:32]	<rein>	시간이 좀 걸리긴하겠지만
[18:40:34]	<i>	 서버는
[18:40:38]	<i>	 정기점검 시간이있는게
[18:40:41]	<i>	 좋은거같음
[18:40:48]	<rein>	...
[18:40:50]	<rein>	실로 그러함
[18:40:55]	<rein>	인덱스도 리빌드하고 디비도 튜닝하고
[18:40:59]	<i>	 ㅇㅇ
[18:41:00]	<rein>	죽은 메모리도 반납하고(...)
[18:41:04]	<i>	 말도안되는 버그로부터
[18:41:05]	<i>	 안전함
[18:41:08]	<rein>	ㅇㅇ
[18:41:09]	<rein>	...
[18:41:24]	<i>	 제가 21일 지나면 서버가 죽는 버그
[18:41:27]	<i>	 말씀드렸었던듯
[18:42:36]	<rein>	...

 

사실 주기적으로 전체 시스템을 내렸다 올릴 수 있다는 것만으로도, 단위가 크지 않은 메모리 릭 ((위에서 내가 결국엔 죽는다고 말한 것도 반응 속도가 생명인 게임 서버의 경우 메모리 릭 때문에 물리 메모리가 모자라서 하드 스왑을 시작하면 반쯤 죽은거라고 봐도 무방하기 때문.))  — 물론 반복도 적어야 — 이나, 잘 설계되지 않은 디비 인덱스 문제 같은게 해결된다(…).

메모리 릭은 프로세스에 종속된 거니 다시 시작하면 그만이고, 디비 인덱스도 빨리 못만들어낼 — 실시간으론 하면 안될 — 녀석들도 만들어내면 그만이니까 -_-;;

여담이지만 하드웨어 성능이 지금보다 안 좋았던 2000년대 초반의 게임들은 디비에서 데이터 삭제 자체를 안하고 넘어가는 경우도 왕왕 있었다고 한다. 디비 커밋 — 특히 하드디스크를 꼭 갔다오는 — 연산들은 최대한 피하려고 메모리 디비에 "지워졌다"고 체크만 해놓고, 이것도 묶어서 커밋하고(…), 정기 점검 시간에 몰아서 삭제하는 일을 했다고 한다(…).

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

6 Comments

  1. 고어핀드 / 할꺼다하고 올리는거지(…)

    오스카 / 4 bytes 틱 쓰면 4x일가니까 21일은 짧지 않아요(???)

    doongk / 원래 20살 이후의 생일이란건 우울한거임

  2. 제가 맡고 있는 서비스도… 약 70일정도 서버 점검 없이 갔더랬죠[…]
    결국 문제생겨서[…] 전체 리붓 한번 ㄳ

Leave a Reply