Minecraft 서버 성능 최적화하기
Paper 서버의 성능 문제를 측정하고 안전하게 원인을 줄이는 순서를 알아봅니다.
렉이 발생하면 여러 설정을 한꺼번에 바꾸기보다 먼저 측정하고 한 번에 하나씩 변경해야 원인을 찾을 수 있습니다. 변경 전에는 서버를 백업하세요.
1. 서버와 플러그인 업데이트
- 운영 중인 Minecraft 버전을 지원하는 최신 안정 Paper 빌드를 확인합니다.
- 모든 플러그인이 해당 서버 버전을 지원하는지 확인합니다.
- Java 호환성 가이드에 맞는 Java를 사용합니다.
- 백업한 뒤 Paper와 플러그인을 업데이트하고 시작 로그를 확인합니다.
Paper는 예기치 않은 플러그인 충돌을 놓칠 수 있으므로 무인 자동 업데이트를 권장하지 않습니다. 운영자가 로그를 확인할 수 있을 때 업데이트하세요.
2. spark로 병목 측정
Paper 1.21 이상에는 spark 프로파일러가 포함되어 있습니다. 문제가 실제로 발생하는 동안 콘솔이나 권한이 있는 게임 계정에서 다음 명령어를 실행합니다.
/spark profiler start --timeout 600
10분 동안 측정한 뒤 생성된 보고서 URL에서 다음 항목을 확인합니다.
- 특정 플러그인이 서버 스레드를 오래 점유하는지
- 청크 생성이나 엔티티 처리가 집중되는지
- 가비지 컬렉션이나 메모리 사용이 비정상적인지
/timings는 더 이상 권장되는 분석 방법이 아닙니다. 최신 Paper에서는 spark 보고서를 기준으로 문제를 분석하세요.
3. 청크와 시야 거리 조정
새 청크 생성은 순간적으로 많은 CPU와 저장 장치 작업을 사용합니다. 공개 서버를 열기 전에 월드 경계를 정하고 필요한 영역을 미리 생성하면 플레이 중 부하를 줄일 수 있습니다.
값을 크게 낮추면 부하는 줄지만 플레이 경험도 달라집니다. 변경 전후의 spark 보고서와 실제 플레이를 함께 비교하세요.
4. 플러그인 점검
시작 로그의 경고를 먼저 해결하고 사용하지 않는 플러그인은 제거합니다. 특정 플러그인이 의심되면 다음 순서로 확인하세요.
- 서버를 중지하고 백업합니다.
plugins폴더의 이름을 임시로 바꾸어 플러그인 없이 서버를 시작합니다.- 문제가 사라지면 플러그인을 절반씩 복원하며 원인을 좁힙니다.
- 원인 플러그인의 업데이트와 공식 문제 해결 안내를 확인합니다.
운영 서버에서 /reload로 플러그인을 다시 불러오지 말고 서버를 완전히 재시작하세요.
5. 메모리 설정 검토
시작 명령의 -Xmx는 Java가 사용할 수 있는 최대 힙입니다. 인스턴스의 전체 메모리를 모두 할당하면 운영체제와 파일 캐시가 사용할 공간이 없어 서버가 종료되거나 느려질 수 있습니다.
- 실제 인스턴스 메모리보다 작은 값을 사용합니다.
- 플러그인 수와 동시 접속자에 맞게 조금씩 조정합니다.
- 메모리를 늘리기 전에 spark의 메모리와 GC 지표를 확인합니다.
출처를 알 수 없는 JVM 플래그를 한꺼번에 적용하지 마세요. Java 버전이 바뀌면 지원 여부와 효과도 달라질 수 있습니다. Paper의 Java 설치 안내와 프로파일링 문서를 기준으로 운영하세요.