Przejdź do treści głównej

Optymalizacja serwera Minecraft za pomocą Spark

Zoptymalizuj serwer Minecraft na podstawie profilu Spark. Od Paper 1.21 jest wbudowany. Przy lagu odpal profiler, a potem czytaj TPS, MSPT oraz World.

Skin autora Tomáš NavrátilTomáš Navrátil

Spark pokazuje, gdzie serwer utyka w ticku. Od Paper 1.21 Spark jest częścią serwera. Osobnego jara nie wkładaj do plugins/. Na Fabric, Forge i NeoForge pobierz go, wrzuć do mods/ i po Uruchom ponownie używaj tych samych komend konsoli.

Profiluj tylko wtedy, gdy serwer naprawdę lagi. Pusty serwer pokazuje spokój. Przyczyny zacięć stamtąd nie zobaczysz.

Użycie Spark (szybki przegląd)

  1. Otwórz kartę Konsola.
  2. Na Paper 1.21+ wpisz: spark. Pliku spark.jar w plugins/ nie szukaj.
  3. Gdy lagi, uruchom: spark profiler start --timeout 30.
  4. Otwórz link https://spark.lucko.me/....
  5. Najpierw zajrzyj na kartę World z liczbami entity.
  6. Potem czytaj TPS, MSPT, CPU (process) i drzewo Server thread.
  7. Na Fabric, Forge i NeoForge pobierz jar ze strony Spark albo z Modrinth, wrzuć do mods/, potem Uruchom ponownie.

Oficjalna ścieżka Paper jest w dokumentacji Paper.

1. Sprawdzenie Spark w konsoli

Serwer musi działać. Otwórz kartę Konsola. Komendy wpisuj w pole Wpisz komendę i naciśnij Enter…, bez ukośnika na początku.

Wpisz: plugins. Server Plugins (0) oznacza, że w plugins/ nie ma jara. Spark i tak działa: od Paper 1.21 jest wbudowany. Osobnego spark.jar tu nie trzeba. Dwa Sparki kłócą się o komendy.

Karta Wtyczki na panelu serwera

Wpisz: spark i spark help. Zobaczysz wersję i listę komend. Pomoc pisze z ukośnikiem (/spark tps). Do konsoli ukośnika nie wstawiaj.

Karta Konsola serwera Minecraft w Eternyx Dashboard

Szybki stan bez raportu:

spark tps

2. Start profilera przy lagu

Dokumentacja Paper pokazuje przykład /spark profiler start --timeout 600. To 10 minut. Do pierwszego pomiaru wystarczy 30-60 sekund, ale tylko gdy lag trwa.

spark profiler start --timeout 30

Konsola napisze, że profiler działa w tle i po 30 sekundach będzie wynik. Wcześniejsze zatrzymanie: spark profiler stop.

Karta Konsola serwera Minecraft w Eternyx Dashboard

3. Otwarcie raportu

Gdy czas minie, konsola wypisze link w formie https://spark.lucko.me/.... Otwórz go w przeglądarce. Raport po czasie wygasa, więc zapisuj link tylko na czas analizy.

Karta Konsola serwera Minecraft w Eternyx Dashboard

4. Najpierw liczby entity

W raporcie kliknij u góry ikonę i i otwórz kartę World. Zobaczysz, ile entity trzyma serwer i w którym świecie. To najszybsze sprawdzenie, czy lagu robią moby, przedmioty na ziemi albo przepełniona farma.

Szukaj świata albo typu entity, gdzie liczba skacze w setki i tysiące. Po prawej widać regiony i chunki z najwyższymi liczbami. Chunk to 16×16 bloków, współrzędna to numer chunka × 16.

Karta World w raporcie Spark z liczbami entity

5. TPS, MSPT, CPU i pamięć

W nagłówku raportu czytaj liczby w tej kolejności.

1. TPS. Zdrowy serwer trzyma 20. Poniżej około 18 gracze czują lag.

2. MSPT. Jeden tick to 50 ms. Mediana MSPT ma zostać poniżej 50 ms. Wysoka mediana znaczy, że tick jest przeciążony, nawet jeśli średnie TPS przez chwilę trzyma 20.

3. CPU (process). Obciążenie procesu Minecraft. CPU (system) to cała maszyna. Wysoki system i niski process znaczą, że ticka nie zjada gra, tylko coś obok.

4. Memory (process). Pamięć procesu. Sama z siebie nie dowodzi lagu.

5. Server thread. Korzeń drzewa. Tu widać, co zjada tick: entity, chunki, pluginy.

Nagłówek raportu Spark: TPS, MSPT, CPU i pamięć

6. Drzewo Server thread

Rozwiń gałąź Server thread. Szukaj gałęzi z wysokim procentem: entity, ładowanie chunków, konkretny plugin.

Na pustym serwerze niemal wszystko jest w oczekiwaniu (recordTaskExecutionTimeWhileWaiting), a processPacketsAndTick to ułamek procenta. Serwer jest spokojny. Na lagiującym serwerze processPacketsAndTick jest gruby, a pod spodem konkretni pożeracze.

Rozwinięte drzewo Server thread w raporcie Spark

7. Lista metod (Flat)

Przełącz widok Flat. Lista sortuje metody zabierające najwięcej czasu. Jeśli u góry powtarza się nazwa pluginu, wyłącz go najpierw i powtórz profil.

Widok Flat w raporcie Spark z najdroższymi metodami

8. Co zrobić z wynikiem

Entity trzymają drzewo albo kartę World. Zmniejsz liczbę mobów i przedmiotów na ziemi, obniż view-distance i ogranicz świat worldborderem. W trakcie gry nie generuj nowych chunków. Pregeneruj Chunky.

Jeden plugin trzyma drzewo. Wyłącz go i powtórz profil. Jeśli lag znika, szukaj nowszej wersji albo zamiennika. Nie zbieraj pluginów „na wszelki wypadek”.

Pamięć skacze i jest pełna. Serwer nie wyrabia z czyszczeniem. Zwiększ RAM w pakiecie albo ogranicz świat i pluginy. Spark nie poda dokładnych gigabajtów. Powie, że problem jest w pamięci.

Wysoki CPU (system), niski process. Na maszynie obok Minecrafta coś działa. Nowym pluginem tego nie naprawisz.

Po każdej zmianie odpal nowy profil przy podobnym obciążeniu. Porównuj medianę MSPT, nie tylko TPS.

9. Fabric, Forge i NeoForge

Na tych softach Spark nie jest w serwerze. Pobierz jar Fabric / Forge / NeoForge ze spark.lucko.me/download albo z Modrinth. Na stronie Spark też jest napisane, że Paper 1.21+ nie potrzebuje osobnego pluginu.

Oficjalne pobieranie Spark: Fabric, Forge, NeoForge i Paper

Na Modrinth otwórz kartę Versions i filtruj po Fabric albo Forge.

Wersje Spark na Modrinth filtrowane na Fabric i Forge

Plik wrzuć do mods/. Zrestartuj serwer. Komendy konsoli są te same: spark, spark tps, spark profiler start --timeout 30. Nowego serwera przez Spark nie zakładasz.

Częste problemy

Komenda spark nie istnieje

Na Paper 1.21+ wpisz spark bez ukośnika i bez spark.jar. Na starszym Paper, Spigot, Fabric albo Forge brakuje jara w plugins/ lub mods/, albo po wgraniu nie było restartu.

Dwa Sparki naraz

Do plugins/ wrzuciłeś osobny jar, a Paper już go ma. Usuń zbędny spark.jar i zrestartuj. Inaczej komendy się dublują, raporty są bezużyteczne.

Raport wygląda dobrze, a gracze i tak lagiują

Profilowałeś pusty serwer. Powtórz, gdy jest tyle samo graczy i ta sama aktywność co przy lagu.

Profiler działa za długo

--timeout 600 to 10 minut. Do pierwszego pomiaru 30-60 s albo spark profiler stop.

Wróć do: Redukcja lagu