콘텐츠로 이동

성능 분석

성능 분석은 모든 “최적화”의 근거다. 서버 렉의 주범을 모른다면 최적화는 아무 의미가 없다.

Spark는 Minecraft용 성능 분석기로, 지원 범위가 넓다(Bukkit, BungeeCord, Velocity, Forge, Fabric 등).

플러그인 서버라면 플러그인 버전을 받아 Spark.jar 파일을 서버의 plugins 폴더에 넣는다. 1.13 이상의 모드 서버라면 모드 버전을 받아 서버의 mods 폴더에 넣는다.

1.12.2 이하 버전의 하이브리드 서버는 모드 버전을 우선 쓰고, mods 폴더에 넣는다.

Purpur 포크 서버나 Paper 1.21 #100 이후 빌드에는 Spark가 기본 내장되어 있어 따로 받을 필요가 없다.

프로파일러가 이미 실행 중이라면 다음 명령어를 쓸 수 있다.

/spark profiler open 멈추지 않고 분석 리포트 페이지를 연다.

/spark profiler stop 분석을 멈추고 결과를 본다.

/spark profiler cancel 분석을 취소하고 리포트 업로드도 취소한다.

그 밖의 경우에는 다음 기본 명령어를 쓸 수 있다.

/spark profiler start 기본 모드로 분석을 시작한다.

/spark profiler info 현재 분석 상태를 확인한다.

이것이 주요 명령어이고, 더 많은 기능이나 더 정밀한 분석을 원하면 뒤에 인자를 붙이면 된다. 자세한 내용은 profiler 명령어 사용법을 참고하자.

healthreport 하위 명령어는 TPS, CPU, 메모리, 디스크 사용량이 담긴 서버 상태 리포트를 만든다.

Spark는 기본적으로 서버의 TPS 출력을 대체한다(CMI 같은 플러그인이 덮어쓸 수 있으니, CMI의 /tps 명령어를 끄거나 /spark tps를 전부 입력하자).

Timings는 Spigot에 내장된 성능 분석기다. 모든 이벤트를 감시하기 때문에 성능 부담이 크고,

많은 서버 코어(Purpur 등)에서는 아예 제거되어 있다. 추천하지 않는다.

Arthas는 Alibaba가 개발한 온라인 성능 분석 소프트웨어다. 애플리케이션의 JVM/메모리/GC/스레드 상태를 실시간으로 볼 수 있고, 메서드 호출의 입출력 인자와 예외, 메서드 실행 시간 측정까지 할 수 있다. 주로 특정 플러그인의 CPU 점유와 플러그인 스레드 점유를 분석하는 데 쓴다.

공식 문서 링크

JProfiler는 쓰기 쉬운 유료 성능 분석 소프트웨어다. MySQL이나 메모리 누수까지 분석해 시각적으로 보여 준다.

공식 링크