Lagi serwera kiedy gracze odkrywają nowe tereny

xStrongHacker | 2019-09-27 17:33:32 UTC | #1

Witam :slight_smile:
Mam problem na moim prywatnym serwerze survival, gdzie kiedy gracze podróżują po świecie i odkrywają nowe tereny to serwer zaczyna wtedy lagować. Gracze wtedy skarżą się na cofające się bloki, nie ładowanie się terenu w bardzo niskich odległościach, gracze widzą innych graczy jak dosłownie się teleportują i niektórzy nie wiadomo jakim cudem nagle się znaleźli w ścianie. Ostatecznie może to się skończyć wyrzuceniem gracza z serwera z treścią: “time out”.
Na serwerze gra maksymalnie 4-5 graczy oraz jest przydzielone 10GB ramu (wcześniej było 4GB i to zdecydowanie nie wystarczało) oraz zauważyłem, że serwer w ogóle nie korzysta z tych 10GB, a maksymalnie zużywał 6GB.
Jedynie co to aktualnie jest słabe łącze, bo z upload’em do ok. 1,5 Mb/s (przy dobrych wiatrach) ale jeżeli gracz A już odkrył te tereny to dlaczego kiedy znów gracz A wejdzie na świeżo odkryte tereny to serwer nadal laguje? To samo jest z graczem np. B.
Próby instalowania pluginów typu clearlagg tak naprawdę powodował większe lagi niż je usuwał. Jedynie co pomogło (jest lepiej, ale nie najlepiej) to w spigot.yml usunąłem autosave’a oraz dodałem coś takiego jak aikar tags.
Jest jakaś możliwość aby serwer tak nie lagował? Np. wysłaniem wszystkich wygenerowanych regionów przez serwer (z folderu world/region) do graczy tak aby serwer już nie wysyłał tych terenów, a brało regiony z lokalnych plików znajdujących się u gracza? ~Dość fajny pomysł, ale nwm czy wykonalny
Lub może jakieś inne rozwiązanie?

Dodatkowe informacje:
CPU: Ryzen 7 2700x
Silnik: Paper (1.14.4) na bieżąco aktualizowana
RAM: Przydzielone 10GB
Łącze: Download 28-31Mb/s Upload 1.1-1.5 Mb/s ping: 13
Z konfiguracji:
- Wyłączony autosave
- ustawienie większego tick-per dla mobów
- aikar tags: -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs
- Dodanie argumentów mojangowych na naprawę błędów z mapą (np. oświetleniem): –forceUpgrade –eraseCache

Rozpisałem się maksymalnie jak mogłem oraz wydaje mi się, że lagi są przez zbyt małe łącze ale może da radę to jakoś ominąć?
Proszę o pomoc, za każdą bardzo dziękuje :)


DBanaszewski | 2019-09-27 17:43:53 UTC | #2

Przed rozpoczęciem rozgrywki polecam wygenerować przynajmniej kawałek świata przy pomocy wtyczki WorldBorder i komend tj.: wb fill. To na pewno pomoże, ponieważ domyślnie są wygenerowane tylko chunki spawnu, a reszta jest generowana w locie, co w przypadku 1.14.4 kładzie się na wydajność samego serwera.


Lempik | 2019-09-27 17:49:17 UTC | #3

Potwierdzam. Musiałem w ten sposób wygenerować nie tylko zwykły świat, ale dodatkowo też Kres i Nether, bo jak gracze już mają elytry, to naprawdę jest problem.


xStrongHacker | 2019-09-27 17:53:47 UTC | #4

Dziękuje za odpowiedź.
Szczerze to nawet nie wiedziałem, że ten plugin ma takie jeszcze zastosowania, aż się muszę bardziej nim zainteresować. Bo aktualnie to tylko stosowałem to do mark’a w dynmap aby pokazało gdzie jest granica mapy.
A z tym, że są wygenerowane domyślnie chunki spawnu to jest od tego opcja w paper.yml: “keep-spawn-loaded-range: 8” to akurat o tym wiedziałem, ale też się zastanawiam czy nie lepiej ustawić tutaj na 0, bo to powoduje że cały czas tak jakby te chunki są aktywne.
Oczywiście dziękuje też @Lempik za potwierdzenie :slight_smile:


Lempik | 2019-09-27 18:09:59 UTC | #5

Robiłem coś takiego:

wb world_the_end set 5000 5000 0 0
wb world_the_end fill
wb fill confirm

Ale rób to przez noc, bo to trochę trwa.


xStrongHacker | 2019-09-27 18:14:50 UTC | #6

Ta wiem, że to długo trwa z doświadczenia używania dynmap’a. Ale dzięki za komendy, akurat teraz sobie jeszcze czytam jakie jeszcze możliwości ma plugin WorldBorder i tak się jeszcze zastanawiam nad jedną rzeczą.
Jeżeli sobie ustawię np. granicę do 3k (bo tak zwykle robię) to mogę to jakoś zablokować aby serwer generował świat tylko do tych 3k? Bo zauważyłem, że jak gracz znajduje się na samiutkim borderze mapy to świat się jeszcze lubi wygenerować nawet do 3200 kratek.
Z tym wb fill to sobie to przetestuje czy już nie będzie lagów, bo wydaje się bardzo interesujące i nawet sam jestem ciekaw jak to działa i czy rzeczywiście naprawi mój problem.


Lempik | 2019-09-27 18:25:41 UTC | #7

Sądzę, że generuje chyba tyle chunków, ile gracz widzi (view distance).


DBanaszewski | 2019-09-27 19:43:28 UTC | #8

Sam WorldBorder generuje domyślnie do 200 kratek za borderem mapy, aby gracz mógł ściągnąć kawałki mapy spoza granicy - naturalna rzecz.


system | 2019-10-29 19:43:19 UTC | #9

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.