Serwer Minecraft, który działa wolno, prawie nigdy nie cierpi na brak pamięci. Problem polega na tym, że serwer nie nadąża z przetworzeniem ticka w 50 ms, a przyczynami są byty, ładowanie chunków, odległość renderowania oraz oprogramowanie serwera, mniej więcej w tej kolejności. Jeśli to naprawisz, serwer z 4 GB RAM będzie działał lepiej niż źle zoptymalizowany z 12 GB.
Miara, która się liczy, to TPS (ticks per second), a nie zużycie RAM. Dwadzieścia ticków na sekundę oznacza pełną prędkość. Wszystko poniżej tego oznacza, że serwer nie nadąża z czasem, a nie brakiem miejsca.
Pracuj nad tym w tej kolejności
1. Odległość renderowania (view distance). Każdy gracz ładuje kwadrat chunków wokół siebie. Zmniejszenie odległości renderowania z 10 do 6 kumuluje tę strefę o około dwie trzecie i jest zwykle największym możliwym zyskiem. Odległość symulacji może być jeszcze niższa, bo większość graczy nie zauważa różnicy, czy mob zatrzyma się przy 6 czy 10 chunkach.
2. Byty (entities). Farmy mobów, upuszczone przedmioty, wózki kolejkowe i statuy zbroi są tickowane. Kilka tysięcy upuszczonych przedmiotów działa dokładnie jak atak DoS, który zrobiłeś sam. Ogranicz spawn mobów, czyść przedmioty co jakiś czas i uważnie sprawdzaj każdą farmę działającą gdy nikt nie jest w pobliżu.
3. Redstone i leje (hoppers). Leje sprawdzają się nieustannie, niezależnie od tego, czy coś przez nie przechodzi. Ściana lejów jest kosztowna w sposób, który nie jest od razu widoczny.
4. Ładowanie chunków. Wszystko, co utrzymuje chunki załadowane daleko od graczy, kosztuje budżet ticka na zawsze. Warto skontrolować chunk loadery i systemy oparte o portale, zanim kupisz droższy plan.
5. Oprogramowanie serwera. Paper wykonuje tę samą pracę szybciej niż vanilla, a różnica nie jest mała. Forge i Fabric dodają pracę związaną z modami, co jest ceną za mody, a nie błędem.
Prawidłowa odpowiedź na pytanie o pamięć
Pamięć staje się ograniczeniem tylko w dwóch sytuacjach, które są łatwe do rozpoznania:
java.lang.OutOfMemoryErrorw logu. Bezapelacyjne. Kup więcej pamięci.- Oscylująca pamięć z okresowymi zamrożeniami. Pauzy podczas garbage collection. To problem z konfiguracją, a nie z zakupem.
Wszystko inne, co odczuwasz jako lag, to kwestia pętli ticków. Ile RAM potrzebuje serwer Minecrafta opisuje rozmiarowanie i flagi JVM szczegółowo, wyjaśniając m.in. dlaczego -Xms i -Xmx powinny być równe oraz dlaczego zalewanie całego planu pamięcią w heapie się nie sprawdza.
Serwery z modami to inna sprawa
Mody ładują się na start i pozostają załadowane. Ma to dwie konsekwencje, które poznają użytkownicy „na własnej skórze”:
- Wysokie użycie w stanie bezczynności jest normalne. Modpack, który zajmuje 6 GB przy braku graczy online, nie jest uszkodzony.
- Koszt ticku jest naliczany per mod i narasta. Maszyny, chunk loadery i mody generujące świat dodają obciążenie z każdym tickiem, niezależnie od tego, czy gracz, który je stworzył, jest online, czy nie.
Dodawaj mody partiami, aby spadek wydajności dał się zidentyfikować. To ta sama dyscyplina, która utrzymuje serwery Garry's Mod i Factorio w dobrej kondycji, a brak tej dyscypliny rujnuje wszystkie trzy.
Co zrobić zanim kupisz większy plan
- Ustaw view distance na 6, a simulation distance na 4. Zmierz wydajność.
- Wyczyść upuszczone przedmioty i ogranicz spawn mobów. Zmierz ponownie.
- Przełącz się na Paper, jeśli nie korzystasz z modów. Zmierz.
- Dopiero wtedy rozważ zmianę planu.
Nasze hosting serwerów Minecraft pozwala zmieniać view distance, oprogramowanie serwera oraz flagi JVM z panelu, więc każda zmiana oznacza tylko restart, a nie zgłoszenie do supportu.
Kiedy problem jest faktycznie po naszej stronie, a nie twojej
Jeśli TPS jest w porządku, ale wszystko wydaje się opóźnione, to jest to opóźnienie (latencja), a nie obciążenie serwera, i żadna ilość optymalizacji nie naprawi odległości. Nasze serwery stoją we Frankfurcie, więc ta odległość to fakt dotyczący twojej grupy, a nie ustawienie. Jeśli to już jest spełnione i nadal coś się nie zgadza, warto założyć zgłoszenie zamiast zmieniać kolejne ustawienia.

przez 


