Dedikovaný server Project Zomboid potřebuje zhruba 3 GB paměti pro dva až čtyři hráče, kteří sdílejí jedno město na vanilla nastavení, 4 až 6 GB pro osm až šestnáct hráčů rozptýlených po mapě a 8 až 10 GB pro šestnáct až třicet dva hráčů s workshop mody a mapovými mody. Protože je server program v Javě, tarif je jen polovina odpovědi: heap Javy, nastavený přes -Xmx, musí být zhruba na 70 až 80 procentech tarifu, aby se kolem něj vešel zbytek procesu. Když zvolíš správný tarif a špatný heap, server se zastaví kvůli nedostatku paměti, zatímco Java si pořád myslí, že místo má. Největším faktorem hned po tom není počet hráčů, ale rozptyl - čtyři hráči ve čtyřech městech stojí víc než deset v jednom.
Co má server Zomboid v paměti#
Server pro každého hráče simuluje celý svět a jeho paměť tvoří čtyři věci.
- Načtené buňky a chunky mapy kolem každého hráče. Mapa je mřížka buněk a server drží načtenou oblast kolem každého připojeného hráče: budovy, nábytek, kontejnery, předměty na zemi, vozidla a zombie v té oblasti. Hráči ve stejném městě sdílejí jednu načtenou oblast. Hráči rozprášení po Muldraugh, Riverside a Louisville načítají tři.
- Zombie. Populace zombie se sleduje po celé mapě a zombie v okolí hráčů se plně simulují. Nastavení populace určuje, kolik jich existuje; kolik jich je aktivních najednou, závisí na počtu načtených oblastí.
- Předměty a vozidla. Každý předmět v načteném kontejneru nebo na zemi, každé vozidlo se svými díly a obsahem kufru. Hráči hromadí a základna s třiceti nacpanými bednami a parkovištěm vyloupených aut je spousta objektů.
- Mody. Lua skripty, definice předmětů, textury pro vnitřní evidenci serveru a u mapových modů celé další regiony buněk.
To všechno leží v heapu Javy, kromě vlastní režie JVM, která je mimo něj a je důvodem, proč musí být heap menší než tarif.
RAM podle skupiny a typu serveru#
| Server | Paměť tarifu | -Xmx | Poznámky |
|---|---|---|---|
| 2-4 hráči, vanilla, jedno město | 3 GB | 2g | Pohodlně |
| 8-16 hráčů, rozptýlení | 4-6 GB | 3g - 4g | Nejběžnější případ |
| 16-32 hráčů, mody a mapové mody | 8-10 GB | 6g - 7g | Mapové mody jsou nejdražší část |
| Hodně modovaný, 100+ workshop položek | 10 GB a víc | 7g - 8g | Seznam modů otestuj před spuštěním |
Tabulku čti podle toho, kde budou hráči, ne jen kolik jich je. Malá soukromá skupina, která celá žije v jednom areálu, potřebuje první řádek, i když má osm lidí. Komunita dvanácti hráčů, z nichž každý obsadil jiné město, potřebuje třetí řádek ještě předtím, než nainstaluje jediný mod.
Správné nastavení heapu Javy#
Server se spouští Java launcherem, který čte argumenty JVM z JSON souboru ve složce serveru, na 64bitových instalacích ProjectZomboid64.json. Heap určují položky -Xms a -Xmx v seznamu vmArgs:
{ "mainClass": "zombie/network/GameServer", "classpath": ["."], "vmArgs": [ "-Djava.awt.headless=true", "-Xms2g", "-Xmx4g" ]}Skutečný soubor obsahuje víc argumentů, včetně voleb garbage collectoru, které se mezi verzemi hry liší. Změň jen dva řádky s heapem a zbytek nech tak, jak byl dodán. V dávkovém launcheru pro Windows se stejné dva přepínače nacházejí v StartServer64.bat. U hostingu s panelem bývá heap vystaven jako proměnná v záložce Startup; pokud ano, použij ji místo úpravy souboru, protože panel může soubor při přeinstalaci přepsat.
Co ty dva přepínače znamenají:
- `-Xmx` je maximální heap. To je číslo, na kterém záleží.
- `-Xms` je počáteční heap. Skromná počáteční hodnota je v pořádku; nastavit ji stejně jako
-Xmxznamená, že JVM si hned zabere všechno, což je neškodné, pokud je maximum správné, a graf paměti se pak lépe čte.
Pravidlo pro maximum je stejné jako u každého serveru na JVM: nech místo mimo heap. Metaspace pro načtené třídy, zásobníky vláken, code cache JIT kompilátoru a nativní buffery pro síť se všechno počítají do limitu kontejneru a nic z toho není uvnitř -Xmx.
| Tarif | Rozumné -Xmx | Mimo heap zbývá |
|---|---|---|
| 3 GB | 2g | ~1 GB |
| 4 GB | 3g | ~1 GB |
| 6 GB | 4g - 4500m | ~1,5 GB |
| 8 GB | 6g | ~2 GB |
| 10 GB | 7g - 8g | ~2-3 GB |
Co zvyšuje paměť bez nových hráčů#
Několik nastavení sandboxu a serveru mění paměť víc než přidání hráče. Najdeš je ve dvou souborech podle názvu serveru - ve výchozím stavu servertest.ini a servertest_SandboxVars.lua ve složce Zomboid/Server.
Populace zombie
Zombies určuje celkové předvolené nastavení populace a blok ZombieConfig ji zpřesňuje:
Zombies = 3,ZombieConfig = { PopulationMultiplier = 1.0, PopulationStartMultiplier = 1.0, PopulationPeakMultiplier = 1.5, PopulationPeakDay = 28, RespawnHours = 72.0,},Populace škáluje paměť i CPU přímo. Všimni si vrcholu: s výchozími hodnotami hustota do 28. dne roste k jedenapůlnásobku počáteční úrovně, takže server dimenzovaný na třetí den může být ve čtvrtém týdnu těsný, aniž kdokoli cokoli změnil. Dimenzuj na vrchol. Důležité je i RespawnHours - respawn znovu zaplňuje vyčištěná města, takže zombie nikdy nepřestanou být náklad. Nastavení na 0 respawn vypne a na mnoha multiplayerových serverech je to zároveň vylepšení hratelnosti a pomalé snížení zátěže. Vysvětlení SandboxVars pokrývá všechny volby.
Předměty na zemi
Hráči věci odhazují. Za měsíce se na serveru nashromáždí odhozené oblečení, prázdné konzervy a tašky v každé ulici, kudy se šlo. Ini serveru pro to má úklid:
HoursForWorldItemRemoval=24.0WorldItemRemovalList=Base.Hat,Base.Glasses,Base.MaggotsItemRemovalListBlacklistToggle=falseHoursForWorldItemRemoval určuje, kolik hodin musí předmět ležet na zemi, než se odstraní (0 úklid vypne), a WorldItemRemovalList jmenuje typy předmětů, na které se pravidlo vztahuje. S ItemRemovalListBlacklistToggle=true se seznam změní na výjimky, takže se uklidí všechno kromě uvedených předmětů. To je agresivní a může to odstranit věci, které hráči položili záměrně, takže to před zapnutím oznam. Zkontroluj výchozí hodnoty ve svém souboru: mezi verzemi se měnily.
Vozidla
Každé vozidlo na mapě je trvalý objekt s díly, stavem a obsahem. CarSpawnRate v nastavení sandboxu určuje, kolik se jich objeví; server, který ho pro zábavu nastaví vysoko, skončí s parkovišti v každém městě, všechna načtená pokaždé, když je poblíž někdo. Hráči je navíc sbírají. Základna s dvaceti auty je dvacet sad obsahu kufrů.
Mody a mapové mody#
Mody pro Project Zomboid pocházejí ze Steam Workshopu a v ini serveru se uvádějí podle workshop ID a ID modu. Většina stojí málo paměti: balíček předmětů nebo vylepšení pohodlí je hrstka Lua souborů a definic.
Mapové mody jsou jiné. Přidávají do světa nové buňky - nová města, nové silnice, někdy celé nové regiony - a tyto buňky obsahují budovy, kontejnery a loot stejně jako základní mapa. Z toho plynou dva efekty. Svět je větší, takže se hráči rozprostřou dál a najednou načtou víc oblastí. A některé mapové mody jsou husté, s více kontejnery a předměty na budovu než vanilla města. Třetí řádek tabulky dimenzování tu je hlavně kvůli mapovým modům.
Praktické rady pro modovaný server:
- Přidávej mody po dávkách a po každé sleduj paměť. Kolekci o stovce položek nejde odladit, když server najednou potřebuje o 2 GB víc.
- Po každé změně modů spusť server jednou bez hráčů a zkontroluj jeho paměť v klidu. To je nové minimum.
- Udržuj seznam modů shodný na serveru i u klientů. Neshody hráčům zabrání v připojení; paměť nestojí, ale stojí hodiny.
Mody Project Zomboid a workshop popisuje řádky v ini a pořadí načítání.
Jak dokázat, že problém je v paměti#
Lag ve Zomboidu má dvě běžné příčiny a každá chce jinou opravu.
- Sleduj graf paměti během nejvytíženější hodiny. Pilovitý průběh JVM, který stoupá, po sběru klesne a znovu stoupá, je normální. Čára přilepená u limitu s malými poklesy znamená, že je heap příliš plný a collector se namáhá, aby uvolnil málo.
- Porovnej to s heapem. Pokud je proces u limitu kontejneru, ale heap plný není, je
-Xmxna tarif příliš vysoké a přes limit ho tlačí část mimo heap. Sniž-Xmx. - CPU zkontroluj zvlášť. Hordy zombie, mnoho vozidel a hráči rozptýlení po mapě stojí také čas hlavního vlákna. Rubber-banding s pamětí pohodlně pod limitem je CPU. Metodu popisuje CPU, nebo RAM: co brzdí tvůj server a příčiny specifické pro Zomboid výkon a lag Project Zomboid.
- Hledej vzor v restartech. Server, který se restartuje každý večer ve stejné vytížené hodině a v logu nic nemá, mu dochází paměť. Server, který se restartuje náhodně s chybami Javy v logu, má problém s modem nebo poškozeným savem.
Na RE:NODE se server, který dosáhne limitu paměti, zastaví a čistě restartuje, místo aby se nechal swapovat. Poddimenzovaný heap je tak zřejmý - náhlý restart, ne pomalý úpadek - a graf paměti v konzoli přesně ukazuje, jak blízko limitu každý večer byl.
Praktický příklad: dvanáct hráčů přerůstá 4 GB#
Skupina dvanácti hráčů spustí vanilla server na tarifu 4 GB s -Xmx3g. První čtrnáct dní je vše v pořádku: většina z nich žije v jednom areálu v Muldraugh a na zásobovací výpravy chodí společně. Ve třetím týdnu se tři hráči přestěhují do Riverside, dva zabere farmu u Rosewoodu a večerní sezení začnou končit náhlými restarty bez jediného záznamu v logu.
Postupně:
- Restarty jsou paměť. Nic v logu, v nejvytíženější hodině, a graf v panelu ukazuje, že proces těsně před každým restartem tlačí na hranici 4 GB. To je limit kontejneru, ne chyba Javy.
- Heap není celý příběh. S
-Xmx3gmůže heap využít jen 3 GB, takže další tlak tvoří paměť mimo heap plus plný heap. Zvýšit-Xmxna3500mna stejném tarifu by to zhoršilo, protože to bere místo části, která už proces přes limit tlačí. - Příčinou je rozptyl. Každý večer jsou načtené tři oddělené oblasti místo jedné, každá s vlastními zombie, kontejnery a vozidly, a populace se blíží vrcholu 28. dne.
- Možnosti. Přejít na tarif 6 GB s
-Xmx4500m, který rozptylu pohodlně stačí. Nebo zůstat na 4 GB a snížit zátěž: nižšíPopulationPeakMultiplier, zapnout úklid předmětů a domluvit se ve skupině, že základny zůstanou v jednom nebo dvou městech. Mnoho skupin dělá trochu od obojího. - Zkontroluj po týdnu. Užitečné číslo je vrchol během nejvytíženějšího večera, po překonání vrcholu populace. Pokud je pod zhruba 85 % nového limitu, tarif je správný.
Tento vzor je dost běžný, aby se s ním dalo počítat. Server Zomboid, který bude hostit víc než osm lidí, se má dimenzovat na týden, kdy se skupina rozptýlí, ne na týden, kdy dorazí.
Disk a složka se savem#
Selhává paměť; roste disk. Save multiplayerového světa leží v Zomboid/Saves/Multiplayer/<servername>/ a obsahuje jeden soubor map_X_Y.bin pro každý chunk mapy, který někdo navštívil, plus data hráčů a vozidel. Server, který běží rok na hodně procházené mapě, se měří v gigabajtech a stovkách tisíc malých souborů. Zálohy trvají s růstem déle a obnova je pomalejší, než lidé čekají. Reset mapy a světa v Project Zomboid popisuje resetování částí mapy bez smazání hráčů, což je také poctivý způsob, jak starý save zmenšit.
Tarify Project Zomboid na RE:NODE začínají na 3 GB a jdou až do 10 GB, od 9 USD měsíčně, se třemi přidělenými porty. Instalace vyžaduje přihlášení do Steamu zadané v záložce Setup a přechod na vyšší tarif zvedne limit na serveru, který už máš, bez nutnosti ho znovu stavět.
FAQ#
Stačí 4 GB na server Project Zomboid?
Pro zhruba osm hráčů, kteří hrají většinou ve stejné oblasti, na vanilla nebo lehce modovaném nastavení ano, s -Xmx kolem 3g. Dvanáct hráčů rozptýlených po několika městech, nebo jakékoli mapové mody, chtějí 6 GB nebo víc.
Na kolik mám nastavit -Xmx?
Na sedmdesát až osmdesát procent paměti tarifu. Tím necháš místo pro paměť JVM mimo heap, kterou kontejner také počítá. Na tarifu 4 GB -Xmx3g, na 8 GB -Xmx6g. Nikdy ho nenastavuj na celý tarif.
Proč můj server Zomboid používá ve čtvrtém týdnu víc RAM?
Nejspíš kvůli výchozímu vrcholu populace: s PopulationPeakMultiplier na 1.5 a PopulationPeakDay na 28 počet zombie během prvního měsíce roste. Přidává se k tomu rozptyl hráčů a hromadění předmětů a vozidel. Dimenzuj na vrchol, ne na první týden.
Spotřebovávají mapové mody hodně RAM?
Víc než většina modů. Přidávají do světa buňky, takže se hráči rozptýlí dál a server načítá víc oblastí najednou, a husté mapové mody nesou víc kontejnerů a předmětů na budovu. Server s několika mapovými mody patří do pásma 8 GB a víc.
Pomůže restart serveru?
Vrátí JVM čistý heap a vyplatí se dělat ho podle plánu, typicky jednou denně. Neodstraní předměty, vozidla ani zombie, protože jsou uložené ve světě. Pokud je paměť do hodiny od restartu u limitu, server potřebuje větší tarif nebo lehčí svět.




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.