Krótka odpowiedź
Najpierw usuń źle zoptymalizowane pluginy, bo kosztują więcej niż wszystko inne razem wzięte.
Potem ustaw batching.colliders "0", ogranicz fps.max do wartości
między 30 a 100, podnieś server.saveinterval "600" i rozważ
nav_disable "true" oraz ai.think 0, jeśli możesz obejść się bez
ruchu zwierząt.
Najważniejsze informacje
- Rust potrzebuje taktowania, nie liczby rdzeni. Główne funkcje Unity są jednowątkowe.
- Jeden źle napisany plugin może zniweczyć każdą inną optymalizację z tej strony.
- FPS serwera to nie FPS gracza. To różne liczby mierzące różne rzeczy.
- Mierz pluginem Performance Monitor, a potem go usuń. On też kosztuje wydajność.
- Każdy convar tutaj to kompromis. Wiedz, z czego rezygnujesz, zanim go ustawisz.
Co faktycznie wpływa na wydajność
Stabilna wydajność zapewnia graczy, że mają bezpieczne miejsce do gry, w którym nie przegrają walki przez laga ani nie odskoczą teleportacyjnie z krawędzi klifu. Warto być precyzyjnym co do tego, skąd się ona bierze, bo czas poświęcony na niewłaściwą rzecz jest zmarnowany.
W przybliżeniu w kolejności wpływu:
- Pluginy. Jeden źle napisany może zdominować każdy tick serwera.
- Taktowanie procesora. Sufit, pod którym działa wszystko inne.
- Liczba encji. Pod koniec cyklu wipe'u to właśnie ona zmienia się pod tobą.
- Operacje zapisu. Na dużym świecie zauważalne za każdym razem, gdy się wykonują.
Sprzęt: taktowanie ważniejsze niż liczba rdzeni
Zauważysz znacznie lepszą wydajność serwera u dostawców korzystających z szybszych procesorów taktowanych powyżej 3GHz. Powód jest architektoniczny, a nie przypadkowy: główne funkcje Unity są jednowątkowe, więc działają na jednym rdzeniu i nie da się ich rozłożyć na inne. Procesor 32 rdzeniowy taktowany 2.2GHz uruchomi serwer Rust gorzej niż 8 rdzeniowy taktowany 4GHz.
Liczba rdzeni nie jest bez znaczenia. Rzeczy takie jak AI NPC i zwierząt oraz inne obiekty związane z mapą można rozłożyć na wiele rdzeni, dlatego serwery z większą liczbą graczy naprawdę korzystają z dodatkowych rdzeni. Dobry dostawca powinien oferować możliwość większej liczby rdzeni dla większego serwera, a przede wszystkim hostować Rusta na procesorach o wysokiej częstotliwości.
To najbardziej przydatna rzecz do sprawdzenia przed zakupem. Jeśli dostawca reklamuje liczbę rdzeni i RAM, ale nie taktowanie, zwykle jest tak dlatego, że taktowanie nie jest tym, czym warto się chwalić.
Pluginy: największy pojedynczy czynnik
uMod to dodatek moddujący do Rusta, który pozwala serwerom uruchamiać pluginy tworzone głównie przez społeczność. Dobrze napisane, aktywnie utrzymywane pluginy nie wpłyną na wydajność serwera.
Zostanie zrujnowana przez zły. Bez twojej wiedzy niewielki fragment kodu w którymkolwiek z twoich pluginów może poważnie pogorszyć wydajność serwera, a rozmiar czy pozorna prostota pluginu w niczym tego nie zdradzają. Nawet najmniejszy, wyglądający na najlżejszy plugin może wywołać chaos, co potwierdzi każdy doświadczony właściciel serwera Rust albo twórca pluginów.
Unikaj uruchamiania zbyt wielu pluginów. Sama ich liczba ma swój koszt, niezależnie od jakości pojedynczego pluginu, a odpowiedzią na problem częściej jest usunięcie pluginu niż dodanie kolejnego.
Optymalizacja pluginów, które zostawiasz
Niektóre pluginy udostępniają ustawienia strojenia wydajności, takie jak timery i interwały. Zwykle są domyślnie wyłączone albo ustawione zachowawczo. Sprawdź plik konfiguracyjny pluginu i je włącz, bo plugin odpytujący co tick, gdy mógłby odpytywać co trzydzieści sekund, wykonuje trzydzieści razy więcej pracy, niż potrzeba.
Pomiar, zanim cokolwiek zmienisz
Zgadywanie przy problemach z wydajnością marnuje czas. Warto wykonać dwa pomiary.
FPS serwera
To liczba klatek, z jaką działa serwer. Nie ma bezpośredniego wpływu na liczbę klatek
u twoich graczy, choć wysoka liczba encji w jednym miejscu wpłynie na oba. Monitoruj
ją przez RCON komendą FPS.
Plugin Performance Monitor
Performance Monitor dla uMod raportuje w czasie rzeczywistym informacje o zużyciu pamięci, czasie hooków pluginów i innych pomiarach wpływających na wydajność serwera. Pokaże ci, który plugin zużywa najwięcej czasu na pojedynczym hooku, zamieniając "serwer się źle czuje" w konkretną nazwę.
Nie zostawiaj Performance Monitor uruchomionego bez końca. Samo monitorowanie zużywa zasoby i pogorszy wydajność, którą próbujesz zmierzyć. Zainstaluj go, zbierz odczyty, zadziałaj na ich podstawie, a potem go wyładuj.
Convary, które mają znaczenie
Każdy z nich to kompromis, a nie darmowa wydajność. Zyski są prawdziwe, tak samo jak rzeczy, z których rezygnujesz.
batching.colliders "0"
Usuwa konieczność batchowania encji przez serwer. To duży zysk wydajności: przy włączonym batchowaniu za każdym razem, gdy ktoś buduje, serwer musi rozbić, a potem ponownie zbatchować wszystkie powiązane encje.
Zastrzeżenie: jeśli twój serwer przekroczy 265 000 encji, trzeba będzie włączyć to ponownie, aby obejść limit encji Unity. Pod koniec długiego cyklu wipe'u na ruchliwym serwerze to liczba realna, a nie teoretyczna, więc warto ją obserwować.
nav_disable "true"
Wyłącza siatkę NAV na twoim serwerze. Zysk wydajności jest duży. Kosztem jest to, że zwierzęta i NPC całkowicie przestają się poruszać.
To, czy jest to akceptowalne, zależy od twojego serwera. Na serwerze mocno nastawionym na PvP, gdzie nikt nie poluje na jelenie, jest to niemal darmowe. Na serwerze PvE albo roleplay usuwa to znaczącą część gry.
ai.think 0
Mogłeś zauważyć na dużych serwerach, że zwierzęta nie reagują ani nie walczą. To efekt
ustawienia ai.think na 0. Ma to znaczący pozytywny wpływ na wydajność, szczególnie
gdy liczba graczy jest wysoka, a gracze często znajdują się blisko zwierząt.
server.saveinterval "600"
Możesz zauważyć spadki FPS po stronie serwera podczas zapisu na serwerze z wysoką liczbą encji. Wydłużenie czasu między zapisami minimalizuje ten efekt.
Kompromisem tutaj jest ryzyko: dłuższy interwał oznacza więcej utraconego postępu, jeśli serwer ulegnie awarii między zapisami. 600 sekund to rozsądny balans, ale jeśli twój serwer jest niestabilny z innych powodów, nie lecz objawu, podnosząc koszt awarii.
fps.max
Kontrolowanie FPS twojego serwera to ogólnie dobry pomysł, aby serwer nie pracował mocniej,
niż to konieczne, bez żadnej korzyści dla graczy. Facepunch stwierdziło, że gracze nie
zauważą serwera ograniczonego do 30 klatek na sekundę. Zdecydowanie zaleca się ustawienie
fps.max na wartość między 30 a 100.
Restarty
Codzienne restarty mogą pomóc wydajności na serwerach moddowanych. Długo działające procesy gromadzą presję na pamięć, a pluginy powoli wyciekające pamięć są na tyle powszechne, że zaplanowany restart to rozsądne zabezpieczenie.
Planuj je na spokojną godzinę i ogłaszaj je. global.restart daje graczom
300 sekundowe ostrzeżenie w odstępach co 5 sekund, co daje wystarczająco czasu na dotarcie w
bezpieczne miejsce. Cichy restart w środku najazdu straci ci więcej graczy, niż zyska zysk
wydajności.
Co robić, w kolejności
-
Najpierw zmierz
Sprawdź FPS serwera przez RCON i uruchom na chwilę Performance Monitor. Bez punktu odniesienia nie stwierdzisz, czy cokolwiek, co zrobiłeś, pomogło.
-
Usuń najgorszy plugin
Ten, który wskazał monitor. To niemal zawsze pojedynczy największy dostępny zysk, i jest darmowy.
-
Dostrój pluginy, które zostawiasz
Timery i interwały w ich plikach konfiguracyjnych, tam gdzie istnieją.
-
Zastosuj convary
Zacznij od
batching.colliders "0",fps.maxiserver.saveinterval, które nic nie kosztują w sposób zauważalny dla graczy. Rozważnav_disableiai.thinktylko wtedy, gdy możesz zaakceptować nieruchomą dziką faunę. -
Zmierz ponownie
Te same narzędzia, te same warunki, najlepiej przy podobnej liczbie graczy. Potem wyładuj monitor.
-
Przyjrzyj się sprzętowi
Jeśli zrobiłeś już wszystko powyższe, a wydajność wciąż jest słaba, sufitem jest procesor i żadna konfiguracja tego nie przeskoczy.
Jeśli jesteś na tym ostatnim etapie, nasz poradnik na co zwrócić uwagę przy kupnie serwera Rust opisuje, o co zapytać dostawcę przed przeprowadzką.