Lodehost logoLodehost

Wydajność i naprawy

Co mówi Ci linijka Can't keep up w konsoli

Prędzej czy później w konsoli pojawia się ostrzeżenie, że serwer nie nadąża i jest tysiące milisekund do tyłu. Brzmi groźnie i czasem takie jest. Często to jedna ciężka chwila, która już minęła. Sama linijka mówi więcej, niż większość ludzi z niej wyczytuje, a kilka minut mierzenia pokazuje, z którym z tych przypadków masz do czynienia.

7 min czytania

Oś czasu ticków przesuwających się za rzędem terminów, z luką oznaczoną jako dwie sekundy opóźnienia
Ostrzeżenie dotyczy rozkładu: pojawia się, gdy serwer spóźnia się o ponad dwie sekundy.

Linijka i to, co mówią jej dwie liczby

Konsola

Can't keep up! Is the server overloaded? Running 5023ms or 100 ticks behind

Serwer Minecraft pracuje według rozkładu. Przy normalnym tempie planuje jeden tick co 50 milisekund, a po każdym ticku czeka, aż przyjdzie pora na następny. Gdy ticki trwają dłużej niż zaplanowano, przestaje czekać i uruchamia je jeden za drugim, żeby wrócić do rozkładu. Ostrzeżenie pojawia się, gdy to nie działa, a luka urosła za bardzo.

Część linijkiCo oznacza
Running 5023msIle serwer jest do tyłu względem własnego rozkładu w chwili sprawdzenia
or 100 ticks behindTa sama luka liczona w tickach: milisekundy podzielone przez długość jednego ticka, zaokrągl w dół
Is the server overloaded?Pytanie, a nie diagnoza. Gra wie tylko, że się spóźnia, a nie dlaczego

Zaraz po wypisaniu serwer vanilla rezygnuje z tych ticków. Przesuwa rozkład do przodu o liczbę z linijki i od tego miejsca pracuje dalej, więc 100 ticków z przykładu nigdy się nie wydarza. Pięć sekund wzrostu upraw, przetapiania i ruchu mobów po prostu znika dla wszystkich online, dlatego gracze zauważają skok, a nie spowolnienie.

Kiedy pojawia się ostrzeżenie i jak często

Gra ma dwa warunki, oba wbudowane w serwer. Luka musi być większa niż jedna sekunda plus dwadzieścia ticków, czyli dwie sekundy przy normalnym tempie. A od poprzedniego ostrzeżenia musi minąć w rozkładzie co najmniej dziesięć sekund plus sto ticków, czyli piętnaście sekund. To wyjaśnia, dlaczego liczba w linijce nigdy nie jest dużo mniejsza niż 2000 przy 20 tickach na sekundę.

Wyjaśnia to też, jak późno przychodzi ostrzeżenie. Jeśli każdy tick trwa 60 milisekund, serwer traci 10 milisekund na tick, a potrzeba 200 ticków, około dwunastu sekund rzeczywistego czasu, zanim luka w ogóle dojdzie do dwóch sekund. Gracze czują to już od jakiegoś czasu.

Cicha konsola nie dowodzi zdrowego serwera

Ticki po 48 milisekund albo przestój półtorej sekundy co minutę nigdy nie wywołują tej linijki. Gracze i tak czują jedno i drugie. Oceniaj serwer po czasach ticków, a ostrzeżenie traktuj jako wskazówkę, że warto mierzyć.

Dwa polecenia zmieniają obraz. tick rate ustawia inną liczbę ticków na sekundę, co zmienia długość ticka, a z nią oba progi: przy 10 tickach na sekundę tick trwa 100 milisekund, a ostrzeżenie czeka na lukę trzech sekund. Podczas tick sprint sprawdzenie jest całkiem pomijane.

Schemat wolnych ticków oddalających się od zaplanowanych czasów, aż luka przekroczy dwie sekundy
Każdy wolny tick trochę powiększa lukę. Linijka pojawia się, gdy luka przekroczy dwie sekundy, a potem pominięte ticki zostają porzucone.

Paper i Purpur już jej nie wypisują

Paper usunął to ostrzeżenie w buildach dla 1.21.9, razem z nowym sposobem obsługi spóźnionych ticków. Po skoku Paper uruchamia jeden za drugim najwyżej kilka pominiętych ticków, pięć, chyba że catchup-ticks w paper-global.yml mówi inaczej, a resztę bez słowa porzuca. Purpur bazuje na Paperze i zachowuje się tak samo. Jeśli więc przeszedłeś na nowszą wersję Papera i linijka zniknęła, lag nie zniknął.

Typ serweraWypisuje ostrzeżenieCzasy ticków sprawdzisz przez
VanillaTaktick query
Fabric, Forge i NeoForgeTaktick query albo spark jako mod
Paper i Purpur, 1.21.9 i nowszeNiemspt i spark tps
Paper i Purpur, starsze wersjeTakmspt i spark tps

Jedna linijka czy linijka, która ciągle wraca

Wzór mówi więcej niż liczba. Przewiń konsolę wstecz i zanotuj godziny każdego ostrzeżenia, a potem porównaj je z tym, co działo się na serwerze.

Co widziszCo to zwykle oznaczaCzy warto działać?
Jedna linijka, potem nic przez godzinyJeden przestój dłuższy niż dwie sekundy: reload datapacków, duże wklejenie w WorldEdit albo długa przerwa pamięciZwykle nie, chyba że zgadza się z chwilą, na którą skarżyli się gracze
Linijki tylko wtedy, gdy ktoś lata albo eksploruje dalekoNowy teren tworzony tak szybko, jak podróżuje graczTak, a rozwiązanie jest znane: wygeneruj ląd z wyprzedzeniem
Linijki mniej więcej co piętnaście do dwudziestu sekund przez cały wieczórTicki są cały czas za wolne: farma, za dużo bytów, plugin albo modTak, profiluj to w trakcie
Linijki, które kończą się w chwili, gdy jeden gracz się wylogowujeCoś w pobliżu tego gracza: jego baza, farma, maszynyTak, i już wiesz, gdzie szukać

Serwer, który spóźnia się cały czas, wypisuje linijkę raz po raz, bo po każdym ostrzeżeniu luka zaczyna od zera i zapełnia się w tym samym tempie. Liczba, która rośnie z linijki na linijkę, oznacza, że ticki zwalniają w miarę upływu wieczoru, co wskazuje na coś, co się gromadzi, na przykład przedmioty na ziemi albo farmę mobów bez limitu.

Mierz ticki zamiast liczyć ostrzeżenia

Otwórz zakładkę „Konsola”, gdy lag trwa, i zapytaj serwer wprost. W grze te same polecenia wpisuje się z ukośnikiem na początku.

Konsola

tick query
mspt
spark tps
  • `tick query` jest częścią samej gry od 1.20.3, więc działa na vanilla, Paperze, Purpurze i typach z modami, a w grze wymaga poziomu operatora 3. Pokazuje docelowe tempo, średni czas ticka oraz 50., 95. i 99. percentyl. Gdy serwer się spóźnia, dodaje The game is running, but can't keep up with the target tick rate.
  • `mspt` to własne polecenie Papera, dostępne też na Purpurze. Wypisuje średni, najszybszy i najwolniejszy tick z ostatnich 5 sekund, 10 sekund i minuty, na zielono poniżej 40 milisekund, na żółto od 40 i na czerwono od 50.
  • `spark tps` pokazuje liczbę ticków i czasy obok siebie. Paper i Purpur mają spark; na Fabric, Forge i NeoForge dodajesz go jako mod, a ma buildy dla 26.2 na wszystkich trzech.

Patrz na najwolniejsze ticki, nie tylko na średnią. Średnia 30 milisekund z maksimum 2500 to serwer, który jest w porządku poza jednym przestojem, i dokładnie w takim przypadku stare ostrzeżenie wypisałoby jedną linijkę.

Zakładka Konsola z wynikiem tick query, średnim czasem ticka i percentylami
tick query pokazuje spóźnienie serwera w milisekundach na tick, czego ostrzeżenie nigdy nie robi.

Sposób, żeby jeszcze dziś znaleźć przyczynę

  1. Zapisz, kiedy to się dzieje

    Zanotuj godziny ostrzeżeń, a na Paperze godziny skarg, oraz kto był online i gdzie. Większość przyczyn zdradza się już tutaj.

  2. Zmierz czasy ticków w trakcie lagu

    Uruchom tick query albo mspt, gdy gracze to czują. Wysokie średnie oznaczają stałe przeciążenie. Normalna średnia z ogromnym maksimum oznacza skoki.

  3. Wyklucz przerwy pamięci

    Uruchom spark gc. Długie odśmiecania, które pokrywają się z ostrzeżeniami, wskazują na pamięć, a poradnik o RAM opisuje, co z tym zrobić. Krótkie to wykluczają.

  4. Złap wolne ticki

    Uruchom spark tickmonitor --threshold-tick 100, który zgłasza każdy tick dłuższy niż 100 milisekund i wypełnia na Paperze lukę po usuniętym ostrzeżeniu. Po przyczynę uruchom spark profiler start --only-ticks-over 100 --timeout 600 i przejdź przez raport z poradnikiem o spark.

  5. Zmień jedną rzecz i zmierz ponownie

    Najpierw napraw największą pozycję w raporcie, a potem powtórz pomiar czasów ticków w podobny wieczór. Dwie zmiany naraz zostawiają Cię z domysłami, która zadziałała.

Konsola

spark gc
spark tickmonitor --threshold-tick 100
spark profiler start --only-ticks-over 100 --timeout 600
Raport wskazuje naCo dalej
Generowanie chunkówWygeneruj świat z wyprzedzeniem i ustaw granicę świata
Byty i byty bloków wokół jednej bazyZmniejsz farmę i sprawdź, co trzyma chunki wczytane
Obszar wokół każdego graczaObniż simulation distance, jak wyjaśnia poradnik o dystansie widzenia i symulacji
Ustawienia Papera dla mobów, przedmiotów i lejówPoradnik o ustawieniach Papera

Co nie usunie ostrzeżenia

  • Podniesienie wartości „Watchdog (ms)”. Pole w grupie „Wydajność” zakładki „Ustawienia” zapisuje max-tick-time, domyślnie 60000. Decyduje tylko o tym, jak długo pojedynczy tick może wisieć, zanim serwer vanilla, Fabric, Forge albo NeoForge uzna się za zawieszony i wyłączy. Paper i Purpur go ignorują i używają timeout-time w spigot.yml, domyślnie 60 sekund. Żadne z nich nie skraca ticka; trzymaj wartość w panelu na 60000 lub wyżej, jak mówi ostrzeżenie pod polem.
  • Więcej pamięci na zapas. Tick działa na jednym wątku, a niewykorzystana pamięć nie przyspiesza tego wątku. Pomaga tylko wtedy, gdy spark gc pokazuje długie przerwy.
  • Ukrycie linijki. warn-on-overload: false w bukkit.yml wycisza ostrzeżenie tam, gdzie jeszcze istnieje. Ticki są dokładnie tak samo spóźnione jak wcześniej.
  • Obniżenie tempa ticków. tick rate 10 odsuwa próg, ale też zmniejsza o połowę tempo całej gry dla wszystkich.
  • Wyłączenie nadrabiania na Paperze. catchup-ticks: 0 powstrzymuje Papera przed uruchamianiem pominiętych ticków jeden za drugim. Niczego to nie wygładza; oznacza tylko, że porzucanych jest więcej ticków.
  • Restart. Restart na chwilę czyści wczytany obszar, a lag wraca, gdy tylko ta sama farma znów się wczyta albo ten sam odkrywca ruszy w drogę.
Grupa Wydajność w zakładce Ustawienia z polem Watchdog (ms) i jego ostrzeżeniem
Watchdog decyduje, kiedy zawieszony serwer się poddaje. Nie zmienia długości zwykłego ticka.

Napisane i sprawdzone przez zespół Lodehost, ostatnia weryfikacja 14 września 2026.

FAQ

Pytania o ostrzeżenie o przeciążeniu

Czy Can't keep up szkodzi mojemu światu?

Sama linijka niczego nie zmienia w zapisach. Tracisz ticki, które serwer pominął, więc farmy, piece i uprawy stały przez te sekundy.

Dlaczego mój serwer Paper laguje, nie pokazując Can't keep up?

Paper przestał wypisywać tę linijkę od 1.21.9. Uruchom mspt w trakcie lagu; wartości na czerwono, od 50 milisekund, to ten sam problem, który zgłaszało ostrzeżenie.

Ile ms opóźnienia to za dużo?

Wielkość jednej liczby znaczy mniej niż to, jak często wraca. Jedno 8000ms po dużym wklejeniu to jeden przestój; 2500ms co dwadzieścia sekund to serwer spóźniony przez cały wieczór.

Czy Can't keep up oznacza, że mój pakiet jest za mały?

Nie samo w sobie. Większość przeciążeń bierze się z tego, co serwer ma tickować, a pokazuje to profil. Porównuj pakiety dopiero wtedy, gdy czasy ticków są czyste, a serwer wciąż jest za bardzo zajęty.

Czy jeden gracz może wywołać ostrzeżenie o przeciążeniu?

Tak. Lot na elytrze w nowe ziemie, farma mobów bez limitów albo tysiące przedmiotów na ziemi mogą być dziełem jednego gracza. Zdradzają to ostrzeżenia, które kończą się, gdy ten gracz wychodzi.

Ostrzeżenie dotyczy czasu ticka, więc od niego zacznij.

Nasza strona o wydajności wyjaśnia, co wypełnia tick 50 milisekund i które części serwera decydują, ile z niego zostaje.

Przeczytaj o wydajności