Problemy z wydajnością serwera Minecraft na VPS

Tagi: #<Tag:0x00007f8df6a39950> #<Tag:0x00007f8df6a397e8> #<Tag:0x00007f8df6a39680>

Od jakiegoś czasu zastanawiamy się co można by było zrobić aby rozgrywka na serwerze minecraft była płynniejsza. Wiadomo, nowe wersje potrzebują większej ilości zasobów. Zrobione zostało wszystko: pregenerowany świat, wybór jako silnik paper’a, wybór flag aikara, pozostawienie wolnego RAMu dla systemu i javy poza minecraftem (3 GB z 8 GB) ale nadal nie przyniosło to jakiejś znaczącej poprawy.

Wysyłałem timingsy na help paper’a a ostatnio zacząłem się skupiać bardziej na VPSie i przekazałem komuś ciut bardziej ogarniętemu to stwierdził, że “core widać że przewalone”. Ja się na tym tak dobrze nie znam, Bopke pomógł mi w htopie ustawić detailed cpu time i wygląda to mniej więcej tak:
image

image

Co mogę jeszcze zrobić/sprawdzić? Ma ktoś jakieś rady?

Podeślesz te timingi? Fakt, widać że CPU jest mocno załadowany, ale serwer gry chyba nie powinien tyle zużywać :thinking:

https://timings.aikar.co/?id=b283a710789d4a7eaeb17b6c57b131b6

Poważne problemy z GC. Norma przy połączeniu nowych wersji mc i javy 8. Na początek zmień jave na 11 lub nowszą. Mogę polecić na obecną chwilę HotSpot OpenJDK 11 z https://adoptopenjdk.net/.

2lajki

well, java zmieniona i nie wygląda by było lepiej, a nawet gorzej bo TPSy przy 10 osobach to teraz spadły do 12 ;-;
htop wygląda tak:
image

timings’y akurat zbyt krótki okres do analizy chyba tak od razu po restarcie, porównam jutro przy większym obciążeniu niż 10 graczy i dokonam update [ no chyba że ktoś bardzo potrzebuje i chce zobaczyć to co jest obecnie https://timings.aikar.co/?id=92b97744100b4420943e1c634a178ed0 ]

Przy okazji możesz zaktualizować papera, bo jesteś 3 buildy do tyłu. Generalnie czeka kilka na githubie prów dotyczących wydajności od niezłego optymalizacyjnego świra, jak już przejdą, to też powinno trochę pomóc.

Co nie zmienia faktu, że masz w tej chwili wysoki steal, nawet wyższy niż wcześniej (ten jasnoniebieski, cyjan). To jest VPS z lvlup?

Zauważyłem że jestem 3 buildy do tyłu, właśnie będę aktualizował : )

Tak, to vps z lvlup

//edit
Po zaktualizowaniu javy do 11 zaczęły mi dodatkowo jakieś błędy wyskakiwać w stylu https://pastebin.com/GCrbKcj6 i serwer stał się całkowicie niegrywalny, powróciłem do javy 8

image
ciekawi mnie to 36% steal’a

Poproś o przeniesienie na inny “luźniejszy węzeł”, kiedyś miałem podobny problem z procesorem i to pomogło. Dostałem też informację że faktycznie zrobiło się dość ciasno wtedy na tamtym węźle.

1lajk

To nie zawsze jest rozwiązanie, testując 1.15.2 wyszło (u mnie) że lepiej pracuje na java 8 jre od OpenJDK, ale to może być kwestia pluginów bo na czystym serwerze paper 1.15.2 np. uruchamiał się szybciej na 11.

1lajk

Wysłałem ticketa, zobaczymy co dalej

Jakoś wątpie, że w javie 8 jest lepsze GC. Mogę jedynie uwierzyć, że jakaś z twoich wtyczek na wersji javy 11 nie mogła używać usuniętych unsafe rzeczy, więc miała inna - gorszą implementacje.

Z drugiej strony patrząc na jakość wszelkich testów porównawczych wydajności w Minecraft robionych przez “administratorów serwerów”, to 99% z tych testów nie ma prawa bytu, bo nie są realnym testem, serwer Minecraft ciągle się zmienia i odtworzenie tego samego stanu do porównania wydajności (szczególnie gdy mówimy o graczach, którzy grają w konkretnych miejscach na serwerze i robią konkretne rzeczy, konkretny stan tick loopu) jest bardzo trudne, jak nie prawie niemożliwe.

Z tego co wiem to np. plugin Citizens jest pisany pod jave 8 i na javie wyższej jest problematyczny (jakieś dziwne błędy się pojawiają)

Ale faktycznie, wydajność na java 11 z pluginami w moim wypadku była niższa od wydajności javy 8. Ja rozumiem, że teoria mówi inaczej, ale w praktyce jak było w moim przypadku - informuję.

Jeszcze nie widziałem żywego przykładu że serwer z np. 100 osobami online działa lepiej na jakiejkolwiek javie 11, gdzieś coś ludzie piszą ale żadnych dowodów.

No widzisz, a ja akurat przetestowałem to na wielu serwerach, na których jest całkiem sporo graczy i jest różnica, wykresy “stabilności serwerów” mają się lepiej, a czasy gc są konsekwentnie niższe.

image image

Java 11 nie jest lekarstwem na wszystkie problemy, jak każda tego typu zmiana. Nie znaczy to jednak, że java 8 “działa lepiej”, bo zwyczajnie, w aspekcie GC (G1GC) tak nie jest (no, może pod warunkiem, że nie używamy jednowątkowego vpsa).

Dość długo już się tym zajmuję i mimo obrzydliwych rzeczy, które są na części z tych serwerów, nadal udaje się im nie wybuchnąć i być na rozsądnym poziomie TPS, ale jednak trochę to pracy wymagało.

No okej, tobie działa lepiej mi się nie chce teraz pokazywać dowodów że u mnie na pojedynczym serwerze (survival) gdzie jest 100 graczy działa wszystko przy 20 TPS i to na java 8 (Nie ograniczając przy tym drastycznie view-distance (co jest straszne).
a z takimi samymi parametrami na java 11 czy 13 spadki momentalnie do -12

Czy zrobiłeś cokolwiek, żeby znaleźć prawdziwe źródło tych problemów z wydajnością, np. użyłeś profilera, przy czym przeanalizowałeś timingi (poprawnie), czy tylko tak sobie mówisz, że gorzej działa?

Dodatkowo w sumie nie widziałem jeszcze serwera z ujemnym TPS. :nosacz:

Który z wymienionych przez Ciebie serwerów jest natywnie postawiony na 1.15.2? :thinking:

Ja na 1.13.2 i niższych nie miałem problemów z TPS

Obecnie najwyższy wersją serwer jest na poważnie zmodyfikowanym paperze 1.15.1, czeka na update. Jest to serwer nazwany Anarchy, nie ma tam za dużo graczy, to trochę test czy to nie wybuchnie.

Generalne problemy z TPS występują zarówno na 1.8, jak i na 1.12, a o nowych wersjach nawet nie wspominam. Wszystko zależy od tego, co na tym serwerze się znajdzie, bo parę farm, trochę redstone i każdy serwer wymięka.

Wersje starsze potrafiły zazwyczaj działać na znośnym poziomie nawet z całkiem dużą ilością graczy, takie 1.15 już niekoniecznie, bo dotknęła je klątwa jeszcze bardziej zaśmieconego heapu i dlatego java 11 tutaj może aż tyle zmienić.

Jak już mówiłem, w moim wypadku wyrzuciła ta java serwer a gracze błagali żebym zmienił to co zmieniłem… (czyli przywrócił jave 8) [na paper’ze twierdzili że to nie wina javy, jednakże nie miałem nigdy takich problemów na 8 a po wgraniu 11 takie się zaczęły dziać]

Nie ujemne TPS tylko to oznaczyłem że do 12 i mniej… :see_no_evil: