Ten artykuł przeczytasz w około 8 minut
Spark to plugin/modyfikacja na większość dostępnych silników, pozwalająca odkryć co laguje na naszym serwerze.
Najnowszą wersję pobierzesz stąd, wybierz prawidłową dla swojego zainstalowanego silnika. Jeśli używasz serwera Vanilla, możesz np. tymczasowo zainstalować Papera i użyć wersji Bukkit.
Przykładowa instalacja pluginu na Spigocie dla wersji Minecrafta 1.17.1.
W pierwszej kolejności zaloguj się na swoje konto BedrockHost.pl i przejdź do panelu Twojego hostingu.
Następnie przejdź do menedżera plików.
Przejdź do odpowiedniego folderu i wyślij plik z pobranym pluginem Spark, bądź użyj opcji Pobierz z URL.
mods
– w przypadku silnika Forge bądź Fabricmods/plugins
– w przypadku silnika Spongeplugins
– w przypadku silników Bukkit, Sponge, Nukkit, Bungeecord, VelocityTeraz wróć do konsoli, zrestartuj serwer i poczekaj na jego ponowne uruchomienie.
Gdy nasz serwer działa z zainstalowanym Sparkiem możemy sprawdzić komendą spark tps
lub tps
czy są lagi.
Jeśli wartość TPS lub Tick durations jest podświetlona na:
Służy do tego komenda spark profiler
, którą wpisujemy gdy na serwerze są lagi i zatrzymujemy komendą spark profiler --stop
po kilkunastu sekundach, aby sprawdzić jej rezultat. W przypadku gdy TPS mamy podświetlony na zielono, wyniki mogą być niemiarodajne.
Dla testów zainstalowałem także plugin WorldBorder, wszedłem na serwer i wpisałem komendy, aby wygenerować nim świat. Na rezultat nie musiałem długo czekać i od razu po wpisaniu spark tps
zobaczyłem że są lagi i natychmiast uruchomiłem spark profiler
.
Po prawie dwóch minutach zakończyłem sprawdzanie komendą spark profiler --stop
. Otrzymujemy wtedy adres na który wchodzimy:
Może to się wydawać skomplikowane, ale musimy się kierować procentami podanymi po prawej stronie metod. Jest to procent czasu ile zajęło wykonywanie danej metody w czasie włączonego sprawdzania. Po najechaniu możemy sprawdzić czas w milisekundach. Oczywiście wątek serwera (Server thread) będzie zawsze zajmował 100% czasu, więc rozwijamy go, aby dowiedzieć się więcej.
Widzimy głównie dwie metody - tickServer oraz sleepForTick. W zależności od wersji Minecrafta oraz użytego silnika nazwy te mogą się nie pokrywać, więc nie sugeruj się mocno nimi. Pierwsza odpowiada za tickowanie na serwerze i jak widać zajmuje aż 99%! Sugeruje nam to, że warto się zainteresować co kryje się pod nią dalej.
Po rozwinięciu widzimy metodę Bukkita zajmującą aż 88%! Nazwa niestety za dużo nie mówi co to może być, jedynie że jest to coś zaplanowanego. Rozwińmy dalej.
CraftTask również za dużo nie mówi, rozwijam dalej.
O proszę a co to? WorldFillTask. Po najechaniu widzimy, że Spark potrafi także odczytać z jakiego pluginu jest ta metoda. Zgadza się, to WorldBorder, którym właśnie generuję mapę. Używałem przecież do tego komendy wb fill
.
Dalsza część Sparka jest w zasadzie mało istotna, bo wiemy już co nam laguje - generacja mapy i możemy ją zatrzymać. Jest ona natomiast bardzo potrzebna dla osób, które chciałyby np. naprawić dany plugin czy modyfikację, ponieważ niezawsze jest prosty sposób na rozwiązanie problemów z lagami. Każdy przypadek lagów jest inny i nie da się w tym poradniku jednoznacznie określić co laguje na Twoim serwerze.
Na tym rezultacie spark tps
widzimy, że TPS-y na chwilę spadły, ale są już w normie. Nazywamy to zjawisko "szpilkami" i są one wyjątkowo bardzo odczuwalne dla graczy, jeśli są częste. Niby 20 TPS i faktycznie inne pluginy (np. edytujące ekran pod przyciskiem TAB) mogą pokazywać te 20 TPS, jednak gracze lagi odczuwają.
Szpilki są cięższe do zdiagnozowania niż normalne lagi, ale nie niemożliwe. Pomocny okaże się nam argument only-ticks-over, który pokaże nam tylko metody, które trwały wyjątkowo dłużej niż normalne. Diagnozowanie szpilek radziłbym od rozpoczęcia z wartością 50, czyli wpisaniem komendy spark profiler --only-ticks-over 50
i zostawienia jej na kilka minut, od czasu do czasu obserwując, czy na spark tps
była widoczna szpilka w momencie działania komendy. Zalecane wartości dla parametru only-ticks-over