본문 바로가기
About me/일상 [Daily]

ubuntu 게임 서버를 약소하게 운영하며 ..Trouble Shooting 및 회고

by SheenaKaze 2024. 10. 29.

회고 : 여전히 서버는 열려있으며, 지인들끼리 들어올 수 있어서 상시 가동 되어 있는 상태다. 

1. 게임 서버 내부에서 인원이 몇 명 더 추가되는 거(겨우 10명 내외 일 때 : 지인이 사용하는 정도)는
생각보다 리소스 소비가 크지 않다.
2. 별 것도 아닌 서버 구성에 , 별 것도 아닌 패키지 설치에 ,별 것도 아닌 서버 운영이 생각보다 재미있었다.
3. 서버 cpu와 memory 등 가용 환경은 어느 순간을 기준으로 한계치에 도달한다. 

서버 cpu 사용률이 1000퍼센트를 넘길 때도 있다. 믿어도 되는 수치인가?

-> 몇년 간 문제없이 내 기준에서는 운영이 잘 되더라도, 다른 요구사항을 추가한다던가, 다른 기능을 서버에서
운영하게 될 때 한계치에 생각보다 쉽게 도달했다. (영원히 한계치에 쉽게 도달하지는 않을 것이라고 생각했다.)

4. 여러 모드팩이 혼재한 이번에 운영한 마인크래프트 모드팩같은 게임 서버는 각종 모드들은 결국 jar 파일로 이루어져
있으므로, 앵간한 최적화와 수많은 테스트 검증을 거친 정식 default  서버와는 다르게 당연히 오류와 ,충돌이 만연해있다.

-> 아마 이런 게임 서버 운영도 잘하시는 분들은 오류를 적게 하거나 , 해당 원인을 빠르게 파악할 것이다. 
-> 내 기준 최선은 로그 파일 , 충돌 로그 다 파악해서 원인이 대충 어떤 것때문에 발생했구나..하고 파악 하는 정도 밖에 안된다.. -> 그럼에도 로그가 너무 길어질 경우 (에러 로그가 길어질 경우) 파악이 어렵다. 

5. 1번 항목에서 인원 추가되는 것 리소스 소모가 크지 않다고 했지만(그 한 명이 추가됨으로써 게임 내에서 그 한 명이 하는 행위에 따라서 리소스를 엄청나게 먹기도 한다 ex) 게임 서버 내부에서 인원 1명이 엄청 나게 큰 게임 내부 이벤트를 실행할 경우) 
6. 현존하는 온라인 게임이나, 서비스들도 무중단 패치, 무중단 백단 작업을 진행하는 것처럼 ram이 치솟을 때 나도 그런 식으로 운영하고 싶지만 -> 아직까지는 방법을 잘 모르겠다. (하여 유저 층이 잘 이용하지 않는 오전 9시를 기점으로 ubuntu 서버를 reboot 시키고 있다.) 

7. 메모리 자체가 내 개인적으로 쓸 정도 밖에 안되는 엄청 적은 가용량 이기 때문에, 문제가 생겼을 때 restart 옵션을 통해 
dawncraft 게임 서버 서비스를 state가 stop이거나 nonactive상태일 때 5초안에 active하도록 해주는 설정을 해주었다. 
8. top 명령어와 몇가지 모니터링 명령어는 서버를 모니터링하는데에 편리하다. 

 

Trouble Shooting : 서버 오픈 3~4일차 , 현재까지의 직간접적인 서버 에러 발생 수 : 5
에러 발생 원인 몇 가지 정리

1. 게임 서버마다 다르지만, 보통의 서버라고 불리우는 것들은 대부분 log를 모두 저장하고 있다. (Log 저장의 중요성은 이루 말할 것도 없다. Application에 문제가 생기거나, 중대한 문제가 생겼을 때, 나름 빠르게 원인을 유추 , 추측할 수 있기 때문) dawnCraft의 서버 오류를 분석 하기 위해서는 로그 경로를 알아야한다. 충돌 로그 경로는 

crash-reports라는 폴더 안에 모두 들어있다.

시간대별 충돌이 발생한 원인이 제일 상단에 큰 원인이 남겨져있고, 상세 로그는 스크롤 하면 계속해도 나오는 양식이다.

참고로 crash-2024-10-26 08:45:30 이렇게 시간나오는 것은 현지시간이 적용되어 있지 않은 timestamp였다. 
대충 저 시간대에서 8시간 ~ 9시간 하면 우리나라 시간이 나왔던 것으로 기억한다. 
각설하여 원인을 정리해보자. 위에 충돌의 원인은  outOfMemoryError 이다. 서버 가용량 메모리가 부족해서 서버가 충돌이 발생한 것이다.
-> 메모리 할당량 Ram min,max 할당량을 좀 넉넉하게 해서, 일단 안정화 진행 중 
-> 매일 특정 시간에 무중단 패치, 무중단 클리어를 하고싶지만 일단 매일 아침 9시에 초기화하는 것으로 진행 

 

2. 모드 자체의 충돌

이 에러는 나도 읽어봐도 로그가 너무 길고 해서 ,gpt의 도움을 받았다. gpt는 정확하지 않는 답을 줄 때도 있기 떄문에 그냥 방향만 어느정도 인지한다 정도로 가지고가는게 좋다.

모드 중 서버 패키지 안에 포함된 immersive_weathering 이라는 자연 환경 침식 작용, 자연환경 텍스처와 같은 걸 설정하는 모드에서 충돌이 발생한 것으로 보인다. 

 

-> 삭제 되면 안되는 모드로 보여서, 일단 reboot 하여 임시로 서버 운영 
-> 이 에러는 자주 발생하는 것이 아니며, 무조건적으로 발생하는 오류가 아니라서 더욱 더 어렵다. 

 

3. 모드 부팅 실패  (패키지 자체의 한계성)

로그들을 찾아보면 , 모드들이 서로 충돌 중인 사항들이 많이 보인다. 모드가 너무 얽히고 섥힌 게임팩이라 그런지..
이를 어떻게 해결 할까 몇 가지 키워드는 보이는데 이를 아예 서버 상에서 제거하는게 과연 맞는걸까 하고 생각 중이다.