Optymalizacja

Pytania i problemy
bover
bover

Witam bardzo serdecznie,

Wraz z nową wersją 1.19.3 zapewne doszły nowe funkcje, moby etc etc. które powodują mniejszą optymalizacje na serwerze.

Ktoś mógłby dać kilka podpowiedzi jak tą wersje zoptymalizować? Na starsze wersje to były jakieś pluginy typu limitery pakietow, wyłączenie AI itd. I jak na tej wersji to wygląda

Byłbym wdzięczny za każdą próbę pomocy :slight_smile:

Timo
Timo Moderator forum.lvlup.pro

Cześć, którą wersję wcześniej użytkowałeś?

Sprawdzałeś już może ten ogólny poradnik? https://lvlup.rok.ovh/t/obszerny-poradnik-dotyczacy-optymalizacji-serwerow-minecraft-1-13/14662?u=timo

Standardowo wraz z nim podsyłam zawsze ten, warty zapoznania się: https://lvlup.rok.ovh/t/kompleksowy-poradnik-dotyczacy-bezpieczenstwa-serwerow-minecraft/13696?u=timo

Helios1993
Helios1993

Poradniki logixa są przestarzałe i bardzo wprowadzają w błąd, nie warto się nimi kierować.

Przeciwnie temu co lubią mówić członkowie społeczności 1.8, wydajność rośnie z każdą wersją. Aktualnie niektóre części kodu, jak np. światło czy redstone, są kilkudziesięciokrotnie szybsze niż kiedyś, a sporo funkcji działa na wątkach innych niż główny (ten od tickowania).

Mogę polecić poradniki od YouHaveTrouble oraz EterNity.

Ważny jest też dobry wybór CPU - procesory pod środowiska wielowątkowe "serwerowe" (xeon, epyc) to - wbrew prostej logice - zły wybór, ponieważ najczęstszym bottleneckiem jest właśnie główny wątek, a procesory te poświęcają wydajność jednowątkową dla wydajności wielowątkowej. Core od intela też odpada ze względu na energooszczędne rdzenie (chyba, że nie masz co robić z pieniędzmi i chcesz całego dedyka przeznaczyć pod jeden serwer). Pozostają Ryzeny od AMD, które są jednocześnie wydajne oraz tanie. Jeśli chodzi o generację procesora, zalecam zawsze trzymać się aktualnej lub - w razie braku takiej możliwości - maksymalnie o jedną w tył.

Temat pluginów jest prosty, lecz ogromne ilości dezinformacji mogą mocno namieszać w wydajności i stabilności serwera. Jedyne pluginy, które naprawdę poprawią wydajność serwera, to limitery (przykładowo insights dla bloków/tile entity i farmcontrol dla entity). Wszystkie inne (czyszczenie przedmiotów z ziemi na całym świecie w jednym momencie, stackowanie mobów, ograniczanie AI itp.) wpłyną negatywnie na ogólne działanie serwera. (Dodatkowa informacja na temat limitera pakietów: jest on wbudowany w silnik, więc nie musisz instalować dodatkowego pluginu. Zalecam przejrzeć dokumentację Papera aby nie skończyć później z powtarzającymi się funkcjami)

Sporo dezinformacji na internecie dotyczy też ramu. Prosta zasada: więcej przypisanego ramu = więcej używanego ramu = dłuższe czasy GC. Skoro najczęstszym bottleneckiem jest główny wątek, a GC wykonuje się na głównym wątku, przypisanie mniejszej ilości ramu w niskim stopniu poprawi wydajność. W 99% przypadków nie potrzebujesz więcej niż 12gb ramu dla pojedynczego serwera, a 16gb to max.

Dodatkowo, zalecam wykonywać częste aktualizacje silnika oraz pluginów i aktywnie badać wydajność serwera za pomocą pluginu Spark.

Axerr
Axerr

Jak już o optymalizacji mówimy, to podeślę coś, co teoretycznie w nieznacznym stopniu pogorszy wydajność z punktu widzenia CPU, ale za to znacznie zmniejszy aktywność sieciową*. Ten plugin ogranicza NBT Tags wysyłane klientowi MC do minimum, więc *-jeżeli Twoi gracze lubią trochę poszaleć z Enchantami, albo masz na serwerze customowe itemy z miliardem tagów -- zdecydowanie pomoże ;) https://www.spigotmc.org/resources/packetwhitelistnbt.98418/

Istnieją też forki Papera, które w różne, magiczne sposoby odciążają serwer, jednak weź pod uwagę, że każdy patch nałożony na Papera niesie ze sobą ryzyko odsunięcia od typowo vanillowego gameplayu. Oto kilka z nich: https://github.com/PurpurMC/Purpur https://github.com/pufferfish-gg/Pufferfish

Przechodząc do RAMu -- jeżeli dysponujesz sprzętem o pamięci operacyjnej w wielkości większej niż 16 GB, to twoim górnym limitem powinno być właśnie te 16 GB. Dlaczego? W większości przypadków paper nie uciągnie na jednej instancji więcej niż 200 osób, jednocześnie umożliwiając płynną rozgrywkę ze względu na słabe procesory. Więcej pamięci operacyjnej w tym wypadku nie załagodzi sytuacji, a wręcz przeciwnie -- pogorszy sytuację ze względu na większą przestrzeń do nadzorowania przez GC (Garbage Collector).

Jeżeli system, na którym postawiłeś serwer MC jest Unixopodobny, a Twój sprzęt dysponuje dyskiem SSD (co jest raczej dość powszechne w tych czasach :kappa:) -- rozważ przeznaczenie jego części na pamięć swap (plik wymiany, jak zwał tak zwał). Są na Internetach różne tabelki, kalkulatory i inne magiczne sztuczki na wyliczanie, ile powinieneś takiej pamięci zastosować. Ja zwykle trzymam się następującej zasady: 25% pojemności RAM, z limitem 4 GB na całość. Dlaczego 4 GB? Bo przy kilku serwerach Minecraft uruchomionych jednocześnie nigdy nie zdarzyło mi się, aby swap wybił ponad 2 GB. Dodatkowe 100% zachowane dla kryzysowej sytuacji (peak).

RAMSWAP
2 GB512 MB
4 GB1 GB
8 GB2 GB
16 GB4 GB
32 GB4 GB
128 GB4 GB
...4 GB
system
system

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