Co sprawdza analizator
spark wiele razy na sekundę zapisuje, co robi serwer, i wrzuca to razem z liczbami i plikami konfiguracyjnymi serwera. Analizator czyta to wszystko i przechodzi przez cztery rzeczy:
- Jak radzi sobie serwer. TPS i MSPT z ostatnich minut, CPU, pamięć, gracze i załadowane byty oraz słupek na każdą minutę, żebyś widział, kiedy zrobiło się wolno.
- Java i maszyna. Rozmiar heapu, garbage collector i to, czy używa flag Aikara, pełne odśmiecania pamięci, pamięć wolna po odśmiecaniu, wątki CPU oraz to, czy maszynie brakuje pamięci albo jest zajęta czymś innym.
- Ustawienia. view-distance i simulation-distance w server.properties, limity spawnu w bukkit.yml, zasięgi aktywacji bytów w spigot.yml oraz opcje Papera i Purpura dotyczące wybuchów, redstone, kolizji, spawnerów, lejów, stojaków na zbroję i osadników. Każde zalecenie mówi, który plik i klucz zmienić.
- Pluginy. Czas, jaki każdy plugin zajmuje na głównym wątku, pluginy, które często sprawiają problemy (ClearLag, PlugMan, stackery mobów), oraz chunk z największą liczbą bytów, z komendą /tp, żeby się tam przenieść.
Zalecenia są posortowane od tego, co poprawić najpierw, do opcjonalnych wskazówek. Dopóki serwer nadąża, zmiany ustawień pokazują się jako wskazówki: zwalniają czas, którego jeszcze nie potrzebujesz.
Jak zrobić profil spark
- Wpisz
/spark profiler startw konsoli albo w grze. Na Paper i Purpur 1.21 i nowszych spark jest już wbudowany. - Niech nagrywa co najmniej 5 minut w zwykłych godzinach, gdy są gracze online. Profil pustego serwera pokazuje tylko bezczynny serwer.
- Wpisz
/spark profiler stop. spark wrzuca profil i wypisuje linkhttps://spark.lucko.me/…. - Wklej link powyżej. Analiza zacznie się sama.
Jeśli lagi przychodzą skokami, a nie cały czas, nagraj tylko wolne ticki: /spark profiler start --only-ticks-over 100 zachowuje ticki, które trwały ponad 100 ms, i pomija resztę.
TPS i MSPT
Serwer obsługuje świat w tickach, 20 na sekundę, więc każdy tick ma 50 ms. MSPT (milisekundy na tick) to czas, jaki tick naprawdę zajął. Dopóki zostaje poniżej 50, serwer trzyma 20 TPS i ma zapas czasu. Gdy ticki trwają dłużej, TPS spada, a moby, redstone i uprawy zwalniają dla wszystkich.
| MSPT | Co to znaczy |
|---|---|
| Poniżej 30 ms | Duży zapas na ruchliwe momenty |
| 30 – 45 ms | W porządku, ale z małym marginesem |
| 45 – 50 ms | Na granicy: widać każdy skok |
| Powyżej 50 ms | Serwer nie nadąża i TPS spada |
Analizator patrzy na 95. percentyl, czyli czas, poniżej którego zmieściło się 95 % ticków. Średnia ukrywa wolne ticki; 95. percentyl nie.
Jak czytać czas na plugin
Lista pluginów sumuje czas spędzony w kodzie każdego pluginu na głównym wątku i dzieli go przez liczbę nagranych ticków, więc wynik jest w ms na tick, w odniesieniu do 50 ms, które ma każdy tick. Plugin, który zajmuje 5 ms na tick, sam zużywa jedną dziesiątą budżetu. Czas, który plugin spędza na wywoływaniu innego pluginu, liczy się temu wywoływanemu, tak samo jak liczy go przeglądarka sparka.
To, co zostaje po pluginach, to sama gra: byty, chunki, redstone i gracze. Zalecenia dotyczące ustawień celują właśnie w tę część. Żeby zobaczyć, które dokładnie zadanie pluginu zajmuje czas, otwórz profil w przeglądarce sparka i przełącz na widok Sources.
Zmiany, które zwykle pomagają najbardziej
- Zmniejsz simulation-distance do 5 lub 6, a view-distance do około 8. Simulation distance decyduje, jaka część świata jest tickowana wokół każdego gracza, więc obciąża każdy tick.
- Zmniejsz zasięgi aktywacji bytów w spigot.yml, żeby moby daleko od graczy były tickowane rzadziej.
- Użyj opcji Papera: optimize-explosions, implementacji redstone ALTERNATE_CURRENT, max-entity-collisions na 2 i tick rate spawnerów na 2.
- Uruchamiaj Javę z flagami Aikara i heapem dopasowanym do serwera. Kalkulator RAM przygotuje ci jedno i drugie.
- Wygeneruj świat wcześniej pluginem takim jak Chunky, żeby nowe chunki nie generowały się w trakcie gry.
Zmieniaj jedną rzecz naraz i po każdej zmianie nagraj nowy profil. Dzięki temu wiesz, co pomogło i co cofnąć, jeśli jakaś farma przestanie działać.
Twój profil a prywatność
Analizator działa w twojej przeglądarce: profil jest pobierany prosto z spark.lucko.me i nigdy nie przechodzi przez EndyStudio. Pamiętaj, że profil spark zawiera pliki konfiguracyjne twojego serwera (spark ukrywa hasła, adresy IP i podobne klucze) i że każdy, kto ma link, może go otworzyć.