cats_love cbed475f090c4c6eb56e3d6dbbad7591
✨ 개요
안녕하세요:) 마인크래프트 서버를 운영하고 있는 고냥 이라고 합니다!
이번 강좌를 올리게 된 계기는 마인크래프트 서버를 어떻게 만들고, 어떻게 구성하는지 전체적인 흐름도를 보며, 마인크래프트 서버를 만들거나, 혹은 마인크래프트 서버를 운영하시는 어드민 분들에게 도움이 될 수 있는 글을 적고자 시작하게 되었습니다!
강좌의 챕터는 총 4개, 버킷 - 서버 구축 - 서버 운영 - 서버 개발로 분류하며, 구체적인 셋팅 방법 보다는 각각에 해당하는 기본적인 이해 지식을 쌓는 것을 강좌 목표로 하고 있습니다.
⚙️ 버킷
버킷이란, 마인크래프트 서버를 구성하는 구동기의 역할을 합니다. 주로 서버의 성능을 정하는 부분으로, '스펙 및 최적화'에 관여하고 있습니다.
1) 버킷 설정하기
서버를 운영할 때 추천드릴 수 있는 무난한 버킷은 Paper이며, PurPur 및 PurPurfish는 Paper에서 포크된 버킷으로, 페이퍼의 기능과 더불어 각종 추가적인 최적화와 추가적인 기능을 제공합니다. 하지만 각각의 버킷은 안정성, 최적화, 추가 기능 등의 차이가 있어 찾고 비교해보시면서 자신에게 알맞은 버킷을 사용하는게 중요합니다.
개인적으로 3개의 버킷을 사용해 본 소감으로, paper은 호환성, purpurfish는 최적화, purpur은 각종 몬스터 트윅, 자체 트윅 기능 등의 추가기능을 제공한다는 이점이 있습니다. 꼭 어느 버킷이 좋다기보다는, 각각의 사용처에 맞게 알맞은 버킷을 선택하는 게 중요한 것 같네요.
2) 버킷의 최적화
버킷은 서버의 구동기이다 보니, 마인크래프트에 직접적으로 관여하게 되고, 대부분의 서버에서는 동접자 수 및 서버 성능에 따라 최적화가 어느 정도는 필요하게 됩니다. 버킷은 대규모 인원을 상정하고 만들어 진 것이 아니기 때문이죠.
소프트웨어적인 최적화 방법으로는 크게 3가지가 있습니다.
첫번째는 bat 실행 파일 최적화입니다. 페이퍼는 아이카르의 깃발 (Aikar's Flags) 을 권장하고 있으며, 메모리 할당과 가비지 콜렉터 관련 영역을 최적화하여, 서버의 안정화를 돕습니다. 메모리 할당량에 따라 일부 플레그가 다르므로 설정 시 관련 위키를 숙지하기 바라며, 메모리 할당 시에는 서버 램 전체 할당이 아닌 서버 램의 80~90%정도로 할당하시는 것이 권장됩니다.
두번째는 spigot.yml, bukkit.yml, paper.yml, 서버 프롬포트와 같은 내부 콘피그 파일을 최적화하는 단계입니다. 해당 부분의 콘피그를 조절하며 최적화 값을 적용시키거나, 서버에 맞게 커스텀하시면 됩니다. 서버 tps 개선, 렉 개선에 직접적으로 관여하지만 어느 정도 잃는 부분을 감수하여야 합니다. 예를 들어, 몬스터 스폰량을 최적화하면 서버 전체적인 몹 스폰량이 줄어 엔티티 관련 렉이 줄것이지만, 반면 몹스폰량이 줄음으로써 기존보다 적게 스폰될 것이고, 뷰-청크거리, 시뮬레이션-청크거리 등을 최적화하면 청크 로딩 및 렉이 줄 것이지만, 과도하게 설정하면 시야폭이 좁아지고, 작물이 자라는 범위 등이 영향을 받겠네요, 해당 부분에 대해 설명을 숙지하고 자신의 서버 상태와 비교하여 타협점을 찾아 가는 것이 최적화의 단계인 것 같습니다.
세번째는 SPARK / 티밍 리포트 분석으로 서버 렉을 찾아내는 방법인데요, 플러그인을 많이 사용하고 있을 경우, 어떤 플러그인에서 렉이 발생하고 있는지, 어떤 엔티티가 렉을 잡아먹는지 확인할 수 있습니다. 대략적인 렉의 원인을 찾는 데 도움이 됩니다.
번외로,플러그인을 사용한 최적화 방법도 존재합니다. 대표적인 Clearlag 등의 플러그인을 사용하여 아이템을 일정 주기마다 자동 삭제시키거나, 몹을 일정 이상 못 모이게 할 수도 있죠. 이러한 최적화 방법 사용 시에는 장/단점이 존재하므로 플러그인의 콘피그를 보면서 자신에게 원하는 최적화 부분만 활성화하는 것이 중요합니다.
3) 하드웨어적 최적화
소프트웨어적인 최적화로 일정 수준의 렉을 개선시킬 수 있으나, 인원수가 중~대규모 서버일 경우, 하드웨어적인 최적화 부분을 고려하게 됩니다.
가장 보편적인 방법은 CPU를 높이는 방법으로, 해당 방법을 이용하면 중규모 수준의 서버에서는 어느 정도 개선이 가능합니다. 단일 코어 성능이 높을 수록 좋습니다.
램은 많을수록 좋은게 아닌, 대부분의 수준에서는 32 이내를 권장하고 있고, 플러그인 등 규모에 따라 어느 정도 조절이 가능합니다.
이는 가비지 콜렉터와 관련이 있습니다. 책상에 몹과 아이템 청크 등등을 여럿 올려 놓을 수 있는데, 가비지 콜렉터라는 쓰레기 수집가가 이미 한번 쓰이고 더이상 쓰이지 않는 책상의 아이템을 치우기 위해서는 적정량의 램을 유지하는게 더 빠르게 치울 수 있다는 점!
만약, 대규모 서버고 리소스를 많이 사용하는 서버라면 최적화 및 CPU를 높여도 적정 수준의 tps를 유지하지 못하는 시점이 오게 됩니다. 이때는 Bungeecord/WaterFall/velocity 등을 이용하여 서버를 분할하고, 서버간 인벤토리 연동, 플러그인 연동 등 신경써야 할 부분이 많아지고, 어느 정도 자체 개발 또는 전문적 지식이 필요하게 됩니다.
😺 마치며
이번 강의는 어떠셨나요?
강의에 대한 피드백을 댓글로 남겨주시면 부족한 부분을 수정하거나, 다음 강좌 시에는 개선하여 업로드 하도록 하겠습니다!
프리루트
2023.03.09대형서버 운영자의 강좌라.. 이거 귀하네요 ㄷㄷ
kch3
2024.04.13서버간 아이템 연동 하는법을 모르겠습니다. 어떤 플긴을 써야할가요?