Server Rust potřebuje zhruba 8 až 10 GB paměti pro mapu velikosti 3000 s až padesáti hráči, 12 až 16 GB pro běžné mapy 3500-4000 se 75 až 125 hráči a 16 až 24 GB pro mapu 4500 a víc s populací, která ji zaplní. Malý soukromý server pro partu kamarádů na mapě 2000-2500 běží na 6 až 8 GB. Tyto hodnoty platí pro konec wipu, ne pro začátek: spotřeba paměti Rustu je nejnižší hodinu po wipu a nejvyšší den před dalším, protože každá zeď, bedna a pec, kterou hráči postaví, zůstává v paměti až do wipu mapy. Dimenzuj na nejvytíženější den cyklu, nech rezervu pro ukládání a pamatuj, že úplně první start nové mapy je nejnáročnější okamžik ze všech.
Co má server Rust v paměti#
RustDedicated je server na Unity s řízeným heapem .NET a téměř všechno, co ví, v něm leží neustále. Na rozdíl od Minecraftu neuvolňuje části světa, u kterých nikdo není. Celá mapa a všechny entity na ní jsou v paměti od startu do vypnutí, takže paměť určuje velikost světa a množství toho, co se na něm postavilo, a jen slabě to, kolik lidí je právě online.
Hlavní spotřebitelé jsou:
- Samotná mapa. Výšková mapa terénu, vrstvy splat a topologie, data biomů, spliny silnic a řek a každý monument a prefab. Paměť mapy roste rychleji než lineárně s
server.worldsize, protože rostou oba rozměry a větší mapy dostávají víc monumentů. - Entity. Každý stavební blok, dveře, bedna, pec, věž, spací pytel, odhozený předmět, mrtvola, sud, ložisko, zvíře a NPC je síťová entita. Vyspělý wipe na rušném serveru jich drží stovky tisíc a právě tato položka během cyklu roste.
- Kontejnery s předměty. Každá bedna drží své předměty jako objekty. Zvýšené velikosti stacků na modovaném serveru znamenají méně předmětů, ale větší počty, a vyšší gather rate znamená víc věcí ve světě celkem.
- Pluginy. Oxide nebo Carbon načítají každý plugin do stejného procesu, včetně jejich datových souborů, cache a časovačů. Většina stojí málo; některé drží v paměti velké struktury.
- Rezerva pro garbage collector. Řízený heap potřebuje volné místo, ve kterém pracuje. Provozovat ho těsně u limitu znamená častější a pomalejší sběry.
Poslední bod lidé přehlížejí. Server Rust, který skutečně drží 9 GB živých dat, nepoběží spokojeně v kontejneru s 10 GB, protože collector potřebuje místo a proces ukládání při zápisu alokuje.
RAM podle velikosti světa a populace#
Jde o pracovní hodnoty pro vanilla nebo lehce modovaný server, měřené na konci týdenního wipe cyklu, ne v den wipu.
| Velikost světa | Hráčů online | RAM | Poznámky |
|---|---|---|---|
| 1500-2500 | 2-10 kamarádů | 6-8 GB | Soukromé servery, krátké wipy |
| 3000 | až 50 | 8-10 GB | Malý a hustý |
| 3500-4000 | 75-125 | 12-16 GB | Běžné rozmezí komunit |
| 4500-5000 | 150+ | 16-24 GB | Jen s populací, která ho zaplní |
| Jakákoli velikost, těžké pluginy | - | přidej 2-4 GB | Podle toho, co pluginy ukládají |
| Vlastní mapa s mnoha prefaby | - | přidej 2-4 GB | Podle autora mapy |
Dvě varování k tabulce.
Sloupec s hráči je ukazatel toho, kolik se postaví, ne přímý náklad. Každý připojený hráč přidává síťové buffery a trochu stavu, řádově desítky megabajtů. Gigabajty stojí to, co postaví. Klanový server s dvaceti hráči, kde každá skupina postaví areál se zdmi, věžemi a dvaceti velkými bednami, může potřebovat víc paměti než server s padesáti sólo hráči bydlícími v domcích dva krát dva.
Sloupec s velikostí světa je volba a je to nejlevnější páka, kterou máš. Mapa 4500 s třiceti hráči je převážně prázdná země, kterou platíš za držení v paměti, a hraje se na ní hůř: lidé se rozprostřou, raidů je méně a server působí mrtvě. Velikost mapy vol podle populace, kterou skutečně máš. Wipy Rustu bez ztráty hráčů popisuje, jak spolu souvisí velikost mapy, frekvence a populace.
Proč paměť vrcholí den před wipem#
Zakresli paměť serveru Rust přes wipe cyklus a nevyjde rovná čára, ale rampa. V den wipu se začíná na minimu mapy. Každý večer přidá základny, deployables a loot. Upkeep a decay část odstraní, ale na aktivním serveru odstraní míň, než hráči přidají. Poslední den cyklu může server držet o několik gigabajtů víc než první.
Z toho plynou dva praktické důsledky.
- Nikdy nedimenzuj podle dne wipu. Server, který je ve čtvrtek odpoledne po čtvrtečním wipu na 55 %, může být následující středu na 95 %. Než usoudíš, že je tarif správný, projdi graf přes celý cyklus.
- Restartuj, ale nečekej, že restart vše vrátí. Restart uvolní fragmentaci a cokoli, co plugin leakoval, což často vrátí gigabajt i víc. Neodstraní entity, protože se ze savu načtou zpět. To dokáže jen decay, úklid a samotný wipe.
Špička při generování mapy#
První start po wipu mapy sestaví celý procedurální svět v paměti, než ho zapíše na disk, a to je nejvyšší spotřeba paměti, jaké server kdy dosáhne. Server, který by hotovou mapu 4000 hostil bez potíží, může při jejím generování zůstat bez paměti.
Vygenerovaná mapa se ukládá do cache ve složce identity serveru:
server/my_server_identity/ proceduralmap.4000.12345.<protocol>.map proceduralmap.4000.12345.<protocol>.sav player.blueprints.<n>.dbNázev souboru nese velikost světa, seed a číslo protokolu hry. Při každém dalším startu server načte uložený .map místo generování, což je rychlejší i lehčí. Pokud se protokol změní (vynucený wipe update) nebo změníš velikost či seed, vygeneruje se znovu.
Pokud první start po wipu selže a druhý uspěje, nebo pokud to funguje, až když mapu zmenšíš, narazil jsi na tohle. Řešení podle pořadí:
- Ujisti se, že během generování nic jiného nespotřebovává paměť: žádné pluginy s těžkou prací při načtení, žádný druhý proces.
- Vygeneruj mapu jednou s omezeným připojováním hráčů a lidi pusť dovnitř, až soubor
.mapexistuje. - Sniž
server.worldsizeo 500. Úspora paměti je skutečná a hráči si jí všimnou jen málokdy. - Vygeneruj mapu někde s větší pamětí a pak nahraj soubor
.mapse stejnou velikostí, seedem a protokolem v názvu.
Startovací řádek, který tohle všechno nastavuje, je ten obvyklý:
$ ./RustDedicated -batchmode -nographics \ +server.identity "my_server_identity" \ +server.worldsize 4000 +server.seed 12345 \ +server.maxplayers 100 +server.saveinterval 600 \ +rcon.web 1 +rcon.port 28016 +rcon.password "change-me"server.worldsize přijímá hodnoty od 1000 do 6000. Seed je libovolné celé číslo. Vlastní mapy používají server.levelurl ukazující na hostovaný soubor .map místo velikosti a seedu a jejich paměť závisí výhradně na tom, kolik prefabů autor umístil.
Nastavení, která řídí, kolik se postaví#
Protože počet entit určuje paměť, nastavení, která ho ovládají, jsou nastavení paměti, ať to říkají, nebo ne.
| Convar | Výchozí | Vliv na paměť |
|---|---|---|
server.worldsize | nastaveno při spuštění | Minimum mapy a jak daleko se hráči rozprostřou |
decay.scale | 1 | 0 vypne decay; opuštěné základny nezmizí nikdy |
decay.upkeep | true | Upkeep znamená, že velké základny stojí zdroje na udržení |
server.maxplayers | nastaveno při spuštění | Nepřímo: víc stavitelů, víc entit |
server.saveinterval | 600 v nedávných buildech | Jak často ukládání alokuje a zapisuje |
Zadej název convaru samotný do konzole a vypíše se jeho aktuální hodnota - výchozí hodnoty se mezi updaty posouvaly, takže čti ty své a nevěř žádné tabulce.
Pluginy pro gather rate a velikost stacků mění tvar paměti víc než její velikost. Vyšší gather znamená, že hráči dřív vlastní víc všeho a dřív staví větší areály, takže server s 3x dosáhne spotřeby pozdního wipu za dny místo týdnů. Modované servery plánuj o řádek výš v tabulce než vanilla.
Pluginy: Oxide, Carbon a co stojí#
Oxide (uMod) i Carbon načítají pluginy jako kompilovaný C# do procesu serveru. Samotný framework přidá několik stovek megabajtů. Jednotlivé pluginy se enormně liší:
- Levné: formátování chatu, kity, teleportační příkazy, jednoduché admin nástroje. Kilobajty až pár megabajtů každý.
- Střední: pluginy pro ekonomiku a obchody, nastavení náročná na oprávnění s tisíci hráči v datových souborech, propojení s Discordem.
- Drahé: cokoli, co sleduje data jednotlivých entit po celé mapě, vlastní pluginy pro NPC a eventy, které spawnují vlastní entity, plugiůny se statistikami a logováním po celé mapě, které drží historii v paměti, a lootové pluginy, které plní další kontejnery.
Datové soubory pluginů leží v oxide/data (nebo v carbon/data u Carbonu) a při startu pluginu se načítají do paměti. Datový soubor, který za měsíce historie hráčů vyrostl na stovky megabajtů, je náklad na paměť při každém startu. Jejich velikost čas od času zkontroluj; frameworky popisují pluginy Oxide a uMod pro Rust a Carbon vs Oxide.
Nejrychlejší test podezřelého pluginu je nudný: vyřaď ho příkazem oxide.unload PluginName (nebo c.unload na Carbonu), počkej na garbage collection a sleduj, jestli paměť klesne. Pak ho načti znovu a sleduj, jestli se vrátí nahoru.
Jak dokázat, že problém je v paměti#
Problémy s výkonem Rustu se zhruba rovným dílem dělí mezi paměť a hlavní vlákno a opravy se nepřekrývají. Zjisti, který máš.
- Sleduj paměť přes celý wipe cyklus. Pokud je vrchol poslední den do 10 % limitu, potřebuješ buď víc paměti, nebo méně entit.
- Zkontroluj `server.fps` v nejvytíženější hodině. Nízké FPS serveru s pamětí hluboko pod limitem je problém CPU: počet entit, pluginy nebo AI. Víc paměti na tom nic nezmění. Co dělat místo toho, popisují požadavky na CPU herního serveru.
- Podívej se, jak se server zastavuje. Server Rust, kterému v kontejneru dojde paměť, nevypíše přívětivou chybu. Log prostě skončí, často uprostřed ukládání, a další start načte, co se naposledy úspěšně zapsalo. Pokud log končí bez výjimky, podívej se na graf paměti v minutách před tím.
- Zkontroluj dobu ukládání. S růstem světa ukládání trvá déle a alokuje víc. Uložení, které poslední den wipu na několik sekund zamrazí server, je znamení, že je svět na tarif velký - a uložení přerušené limitem paměti může poškodit
.sav.
Víc o počtu entit a FPS serveru najdeš v výkonu serveru Rust a entitách.
Rust na pronajatém hardwaru#
Rust není v katalogu her RE:NODE, takže tarif pro Rust není na co ukázat. Pro komunitní server je poctivá odpověď stroj, jehož celá alokace patří tobě: VDS nebo dedikovaný server. Stroj s 16 GB je reálné minimum pro komunitní server s mapou 3500-4000, když počítáš operační systém, proces zálohování a rezervu pro ukládání; 24 GB dává mapě 4500 prostor k dýchání. Malý server pro kamarády na mapě 2000 si vystačí s 8 GB.
Ať ho provozuješ kdekoli, tři návyky udrží příběh s pamětí nudný:
- Plánovaný denní restart v klidné hodině, s předchozím varováním ve hře. Uvolní fragmentaci a leaky pluginů a čistě při něm proběhnou updaty a reloady pluginů. Načasování popisují restartovací plány, které pomáhají.
- Záloha před každým wipem a před každým updatem. Složka identity je server. Zálohuj
server/<identity>a složky s daty a konfigurací pluginů. - Kontrola paměti den před každým wipem. To je číslo, které řekne, jestli další cyklus potřebuje menší mapu, nebo větší tarif.
Na VDS také volíš, co se stane u limitu. OOM killer Linuxu vybere největší proces, kterým je RustDedicated, a rovnou ho zabije. Malý swap soubor kupuje čas na varování, ne kapacitu - proč je trochu užitečné a hodně škodí, vysvětluje swap v Linuxu a OOM killer.
FAQ#
Stačí 8 GB na server Rust?
Na mapu 3000 s až zhruba padesáti hráči, nebo menší mapu pro partu kamarádů, ano. Na běžnou komunitní mapu 3500-4000 poběží v den wipu a ke konci týdne bude mít potíže. Pokud máš 8 GB, vol velikost mapy podle toho, ne naopak.
Používá Rust víc RAM s více hráči?
Trochu přímo, hodně nepřímo. Každé připojení stojí desítky megabajtů. Gigabajty stojí to, co hráči postaví, a víc hráčů staví víc. Paměť serveru sleduje počet entit mnohem blíž než počet online.
Proč můj server Rust spadl při prvním startu po wipu?
Téměř jistě kvůli generování mapy. Sestavit procedurální mapu stojí víc paměti než ji provozovat a první start nové velikosti nebo seedu ji musí vygenerovat. Zmenši svět o 500, nebo ji jednou vygeneruj s větší pamětí a soubor .map si ponech.
Používají pluginy Oxide hodně RAM?
Framework přidá několik stovek megabajtů a většina pluginů přidá málo. Menšina, která spawnuje entity, sleduje data jednotlivých entit nebo drží dlouhé historie ve svých datových souborech, může za wipe přidat gigabajty. Podezřelý plugin vyřaď a sleduj graf paměti, abys to zjistil.
Mám server Rust restartovat každý den?
Na rušném serveru ano. Denní restart uvolní fragmentovanou paměť a případný leak v pluginu a dává předvídatelný čas pro updaty. Nesníží počet entit, takže nezachrání server, který je na svou mapu na konci wipu prostě malý.




Komentáře
Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.