Spigot(스피곳)은 마인크래프트 서버를 위한 고성능 구동기로, Bukkit을 기반으로 성능 개선과 추가 기능을 제공한다. 2012년부터 개발되어 현재까지 가장 널리 사용되는 서버 구동기 중 하나다.
Spigot은 md_5가 주도하는 SpigotMC 팀에 의해 개발되었다. Bukkit의 성능 문제를 해결하고 더 많은 설정 옵션을 제공하기 위해 만들어졌으며, 현재는 마인크래프트 서버의 사실상 표준이 되었다.
주요 특징
성능 개선
- 청크 로딩 최적화
- 엔티티 활성화 범위 제한
- 틱 병합 및 최적화
- 메모리 사용량 감소
- 네트워크 압축 개선
추가 기능
- BungeeCord 지원
- 타이밍 리포트 시스템
- 바닐라 버그 수정
- 향상된 설정 옵션
- 엔티티 추적 개선
설치 방법
1. SpigotMC BuildTools 다운로드 2. Git Bash 또는 터미널에서 실행: java -jar BuildTools.jar --rev 1.21 3. 생성된 spigot-1.21.jar 파일 확인 4. 서버 시작: java -Xms1G -Xmx2G -jar spigot-1.21.jar
설정 파일
spigot.yml
# 주요 spigot.yml 설정
config-version: 12
settings:
debug: false
save-user-cache-on-stop-only: false
bungeecord: false # BungeeCord 사용 시 true
sample-count: 12
player-shuffle: 0
user-cache-size: 1000
moved-wrongly-threshold: 0.0625
moved-too-quickly-multiplier: 10.0
timeout-time: 60
restart-on-crash: true
restart-script: ./start.sh
netty-threads: 4
log-villager-deaths: true
log-named-deaths: true
messages:
whitelist: 화이트리스트에 등록되어 있지 않습니다!
unknown-command: 알 수 없는 명령어입니다.
server-full: 서버가 가득 찼습니다!
outdated-client: 구버전 클라이언트입니다! {0} 버전을 사용하세요.
outdated-server: 구버전 서버입니다! {0} 버전을 사용하세요.
restart: 서버가 재시작됩니다.
world-settings:
default:
verbose: false
merge-radius:
item: 2.5
exp: 3.0
view-distance: default
simulation-distance: default
thunder-chance: 100000
mob-spawn-range: 8
# 엔티티 활성화 범위
entity-activation-range:
animals: 32
monsters: 32
raiders: 48
misc: 16
water: 16
villagers: 32
flying-monsters: 32
# 성장 속도
growth:
cactus-modifier: 100
cane-modifier: 100
melon-modifier: 100
mushroom-modifier: 100
pumpkin-modifier: 100
sapling-modifier: 100
beetroot-modifier: 100
carrot-modifier: 100
potato-modifier: 100
wheat-modifier: 100
# 엔티티 추적
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
성능 최적화 설정
# 권장 최적화 설정
world-settings:
default:
# 아이템 병합
merge-radius:
item: 3.5
exp: 4.0
# 엔티티 활성화 범위 (성능 향상)
entity-activation-range:
animals: 16
monsters: 24
raiders: 32
misc: 8
# 홉퍼 최적화
hopper-transfer: 8 # 기본값: 8
hopper-check: 1 # 기본값: 1
hopper-amount: 1 # 기본값: 1
# 드롭 아이템 수명
item-despawn-rate: 4000 # 기본값: 6000 (틱)
# 몹 스폰 제한
max-entity-collisions: 2
# 화살 제거
arrow-despawn-rate: 300 # 기본값: 1200
명령어
| 명령어 | 설명 | 권한 |
|---|---|---|
| /restart | 서버 재시작 | spigot.command.restart |
| /tps | TPS 확인 | spigot.command.tps |
| /timings | 타이밍 리포트 | spigot.command.timings |
BungeeCord 설정
# spigot.yml에서 BungeeCord 모드 활성화 settings: bungeecord: true # server.properties에서 설정 online-mode=false # BungeeCord가 인증 처리
타이밍 리포트
서버 성능 분석을 위한 타이밍 시스템:
# 타이밍 시작 /timings on # 일정 시간 후 리포트 생성 /timings paste # 생성된 URL에서 상세 분석 확인
Paper와의 차이점
| 기능 | Spigot | Paper |
|---|---|---|
| 성능 최적화 | 기본적 | 고급 |
| 비동기 청크 로딩 | 없음 | 있음 |
| 추가 설정 옵션 | 보통 | 매우 많음 |
| 익스플로잇 패치 | 일부 | 대부분 |
| 업데이트 주기 | 보통 | 빠름 |
플러그인 호환성
- Bukkit 플러그인: 100% 호환
- Spigot 전용 API 사용 가능
- ProtocolLib 등 주요 라이브러리 지원
- 대부분의 플러그인이 Spigot 기준으로 개발됨
최적화 팁
월드 별 설정
world-settings:
world:
# 메인 월드는 정상 설정
mob-spawn-range: 8
entity-activation-range:
monsters: 32
world_nether:
# 네더는 더 제한적으로
mob-spawn-range: 6
entity-activation-range:
monsters: 24
spawn:
# 스폰 지역은 최대 제한
mob-spawn-range: 0
entity-activation-range:
monsters: 16
문제 해결
일반적인 문제
- 높은 메모리 사용: JVM 플래그 조정
- 낮은 TPS: 엔티티 활성화 범위 축소
- 청크 로딩 지연: view-distance 감소
- 플러그인 충돌: 타이밍 리포트로 원인 파악
권장 JVM 플래그
java -Xms2G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar spigot.jar
업데이트 방법
# BuildTools를 사용한 최신 버전 빌드 java -jar BuildTools.jar --rev latest # 특정 버전 빌드 java -jar BuildTools.jar --rev 1.20.4 # 개발 버전 빌드 java -jar BuildTools.jar --dev
장단점
장점
- 안정적이고 검증된 성능
- 광범위한 플러그인 지원
- 활발한 커뮤니티
- 정기적인 업데이트
단점
- ↑ 직접 jar 파일을 배포하지 않고 BuildTools를 통해 빌드해야 함