Optymalizacja serwera Minecraft 1.21 Purpur: Flagi JVM Aikara i konfiguracja tick-loop

· 7 min czytania

Uruchomienie serwera Minecraft w wersji 1.21.x dla większej społeczności graczy wymaga starannego podejścia do zarządzania pamięcią operacyjną oraz optymalizacji wątku głównego (tzw. Server Thread). Domyślny silnik Vanilla oraz standardowa konfiguracja Spigota często nie radzą sobie ze stabilnym utrzymaniem 20.0 TPS (Ticks Per Second) przy intensywnej eksploatacji farm i dużej liczbie załadowanych chunków.

1. Dlaczego Purpur jest obecnie standardem branżowym?

Silnik Purpur to fork silników Paper oraz Pufferfish. Wprowadza on szereg niskopoziomowych poprawek w silniku gry:

2. Optymalne Flagi Startowe JVM Aikara dla Javy 21

Prawidłowe skonfigurowanie maszyny wirtualnej Java (JVM) decyduje o braku mikroprzycięć (tzw. GC pauses). Standardowy algorytm Garbage Collector potrafi zatrzymać cały świat na kilkaset milisekund w celu zwolnienia nieużywanych obiektów. Flagi Aikara eliminują ten problem:

java -Xms10G -Xmx10G -XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-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 \
-Dusing.aikars.flags=https://mcflags.emc.gs \
-Daikars.new.flags=true \
-jar purpur.jar --nogui
Ważna zasada: Ustawiaj -Xms (pamięć początkowa) oraz -Xmx (pamięć maksymalna) na dokładnie tę samą wartość. Zapobiega to dynamicznemu alokowaniu i zwalnianiu pamięci przez system operacyjny, co stabilizuje czas klatki serwera.

3. Kluczowe parametry w plikach konfiguracyjnych

Plik pufferfish.yml:

Upewnij się, że opcja dynamicznego usypiania AI dla mobów jest włączona:

dab:
  enabled: true
  max-tick-freq: 20
  activation-dist-mod: 8

Plik purpur.yml:

Wyłącz niepotrzebne sprawdzanie raycastów i zredukuj obciążenie ticków:

settings:
  use-alternate-keepalive: true
  lagging-threshold: 19.0
gameplay-mechanics:
  mob-last-hurt-by-player-time: 100

4. Monitoring i analiza Profilerem (Spark)

Zamiast przestarzałego Timings v1, w nowoczesnych środowiskach 1.21 standardem jest wbudowany plugin Spark. Komenda /spark sampler --timeout 120 generuje interaktywny raport drzewa wywołań CPU w przeglądarce, pozwalając precyzyjnie zlokalizować plugin lub moba generującego spadek TPS.

Zobacz także