- Oficjalny post
Zbieranie potrzebnych danych
- Wpisz
/timings on
by rozpocząć zbieranie danych - Przez następne kilka minut rób to co byś robił normalnie
- Wpisz
/timings paste
i otwórz otrzymany link
Jak funkcjonuje upływ czasu w grze oraz czemu służą timingi
Upływ czasu w Minecrafcie mierzony jest w tak zwanych tickach. Na każdą sekundę rozgrywki składa się 20 ticków i każdy z nich powinien trwać 50 milisekund. Podczas każdego takiego ticka przetwarzane są różne zdarzenia (ładowanie chunków, interakcja graczy z blokami, obliczanie tras poruszania się mobów itp.), a każda wtyczka zainstalowana na serwerze będzie obsługiwać te zdarzenia w inny sposób (na przykład wtyczka taka jak WorldGuard używa PlayerMoveEvent, aby upewnić się, że gracz nie znajduje się tam, gdzie nie powinien być).
Dane o tym co zajmuje grze określoną ilość czasu jest niezwykle ważna w procesie optymalizacji serwera i dochodzenia do tego co może powodować lagi. Na ich podstawie możemy określić jakie zdarzenia z jakich wtyczek zajmują serwerowi najwięcej czasu na wykonanie (zazwyczaj źle napisane pluginy pochłaniają ogromne ilośći tak cennego czasu). Spadek TPSów (Ticków na sekundę) poniżej 20 równoznaczny jest z tym, że serwer nie nadąża z wykonaniem wszystkich powierzonych mu zadań i zwyczajnie zaczyna lagować.
Jak czytać raporty
Po wpisaniu polecenia /timings paste
otrzymujemy link do bardzo ładnej strony z podglądem we wszystkie zebrane dane.
Pierwsze dwie sekcje raportu zajmują zdarzenia wykonywane przez samą grę. Niżej znajdują się zdarzenia wywołane przez pluginy (posortowane od najdłuższych czasowo do najkrótszych).
U góry raportu widoczne są takie informacje:
- Total - całkowity czas spędzony na obsługę zdarzeń
- Sample Time - czas potwierdzony na zbieranie próbki na podstawie której powstał raport
- Average Entities - średnia ilość entity znajdująca się podczas zbierania próbki
- Average Players - średnia ilość graczy znajdująca się na serwerze podczas zbierania próbki
- Average TPS - średnia ilość ticków na sekundę podczas zbierania próbki
W sekcji konkretnych pluginów widzimy takowe wartości:
- Total - całkowita ilość czasu którą plugin poświęcił na przetworzenie zdarzeń podczas zbierania próbki
- Pct - procentowa wartość (Total z pluginu/Total z całości; wyrażony w procentach)
Każda wewnątrz każdego pluginu widzimy konkretne zdarzenia oraz wartości obok nich:
- Pct Total - procent całkowitego czasu próbki poświęcony na dane zdarzenie
- Pct Tick - procent czasu ticka (50ms) poświęcony na dane zdarzenie
- Total - czas poświęcony na dane zdarzenie.
- Avg - uśredniony czas poświęcony na dane zdarzenie
- Count - ilość wywołanych zdarzeń, które zostały obsłużone przez ten plugin
- Vio - procent całkowitej liczby naruszeń za które odpowiedzialny jest ten plugin
- Event - nazwa zdarzenia
Identyfikowanie laga
Kolumna Pct Total jest dobrym wskaźnikiem TPS. Jeśli dane zdarzenie zajmuje zbyt dużo czasu na przetworzenie, może to oznaczać, że jest ono odpowiedzialne za lagowanie serwera, ponieważ na to zdarzenie poświęcona jest zbyt duża ilość pętli gry.
Kolumna Pct Tick jest przydatna do identyfikacji tzw. lag spikeów (sytuacji gdy pojawia się nagły lag). Na przykład, jeśli Twoi gracze narzekają na występowanie dużych lagów tylko podczas logowania, dobrze byłoby sprawdzić czas trwania PlayerJoinEvent. Widząc dużą liczbę w kolumnie Pct Tick i małą liczbę w kolumnie Count może wskazywać, że wtyczka pożera dużo czasu jednego ticka przetwarzającego to zdarzenie, powodując tym samym lag. W połączeniu z wysoką liczbą naruszeń oznaczałoby to, że wtyczka jest prawie ostateczną przyczyną stałych, powtarzających się skoków opóźnień.
Badanie timingów (czy jak kto woli - raportu czasowego, bo tak się on powinien tu zwać) jest niezwykle ważne podczas szukania co może być nie tak z naszym serwerem. Jeśli widzisz, że konkretny plugin pożera niezwykle dużo czasu jednego ticka to być może jest on przyczyną lagów na serwerze. Dobrym rozwiązaniem byłoby zgłoszenie tego autorowi pluginu lub poszukanie jakieś alternatywy.