RE:NODE

Síť11 min čtení

Šířka pásma na hráče herního serveru podle hry

Kolik uploadu stojí jeden hráč v Minecraftu, Source hrách, Valheimu, Arma 3 nebo Factoriu, která nastavení to ovlivňují a jak provoz serveru dimenzovat a změřit.

0 čtenářů

Jeden hráč na herním serveru stojí zhruba 5 až 250 KB/s uploadu serveru, podle hry: pár kilobajtů za sekundu v Minecraftu nebo Terrarii, 30-60 KB/s ve Source střílečce na 64 ticků, 50-150 KB/s ve Valheimu a až 250 KB/s u vytížené mise v Arma 3. To, co posílá hráč zpátky, je mnohem méně, obvykle pár kilobajtů za sekundu. Problémem málokdy bývá ustálený provoz; problémem jsou špičky - hráč, který se připojí a stahuje svět, změna mapy, modovaný server, který rozesílá assety. Tento článek ukazuje čísla pro jednotlivé hry, nastavení, která je mění, a jak změřit, co váš server skutečně odesílá.

Měsíční objemy a to, co znamená „unmetered“, najdeš v článku šířka pásma a fair use. Tady zůstáváme u pohledu na jednoho hráče.

Provoz na hráče podle hry#

Jsou to typické hodnoty odchozího provozu serveru k jednomu připojenému hráči při běžné hře. Jsou to rozsahy, protože číslo závisí na tom, co je hráči poblíž, jak rychle se pohybuje a jak je server nastavený. Změř si vlastní; tyto hodnoty ti pomohou posoudit, jestli je tvoje měření věrohodné.

HraNa hráče, server ke klientoviCo to ovlivňuje
Minecraft Java5-20 KB/sVzdálenost vykreslování, počet entit, rychlost pohybu hráčů
Terraria5-15 KB/sProjektily a NPC na obrazovce
Factorio10-30 KB/sAkce hráčů, ne velikost továrny
Project Zomboid20-60 KB/sPočet zombie poblíž hráče
Source hry na 64 ticků (CS2, TF2, Garry's Mod)30-60 KB/sTick rate, počet hráčů, klientské rate
Survival sandboxy (7 Days to Die, DayZ)30-150 KB/sEntity a hráči v dohledu
Valheim50-150 KB/sPostavené prvky a tvorové v okolních zónách
Arma 350-250 KB/sAI jednotky, vozidla, limity v basic.cfg

Vyčnívají dva vzorce. Hry, které posílají stav světa tak, jak se mění (Valheim, Arma, survival sandboxy), stojí na hráče víc než hry s kompaktními, předvídatelnými aktualizacemi (Minecraft, Terraria). A Factorio je výjimka: každého klienta simuluje synchronně a posílá jen vstupy hráčů, takže obří továrna nestojí víc pásma než malá - dokud se někdo nepřipojí a nepotřebuje celou mapu.

Rozhoduje odchozí provoz#

Provoz není symetrický. Každý hráč posílá serveru své vstupy - pohyb, míření, akce - což je málo a víceméně stálé, typicky 2-10 KB/s. Server posílá každému hráči stav všeho kolem něj, a to roste s tím, co se děje. Vynásob to počtem hráčů a upload serveru se vždy zaplní jako první.

Proto má hostování doma problémy i na linkách, které vypadají rychle. Připojení 250/25 má spoustu downloadu a 25 Mbit/s uploadu, tedy asi 3 MB/s, které sdílí s celou domácností. Deset hráčů Valheimu po 100 KB/s je 1 MB/s dřív, než někdo v patře zahájí videohovor. Tuhle stránku věci pokrývá článek hostování herního serveru doma, nebo pronájem. V datacentru uplink u běžného herního serveru omezením není; čísla na hráče tam slouží hlavně k pochopení špiček a k odhalení toho, že je něco špatně.

Špičky: připojení, změny map a stahování#

Ustálený provoz je malý. Většina stížností na pásmo se týká okamžiků, kdy malý není.

Připojení. Nový hráč potřebuje svět kolem sebe. Klient Minecraftu, který přijde do nové oblasti, stahuje data chunků tak rychle, jak mu připojení dovolí - několik megabajtů za pár sekund. Klient Factoria musí stáhnout celý save, než může hrát - desítky megabajtů u velké základny, víc u megabase. Dvacet hráčů, kteří se po restartu připojují zpátky, to dělá naráz, a proto je minuta po restartu nejvytíženější minutou dne.

Změny map. Servery na Source enginu pošlou všechny připojené klienty najednou na načítací obrazovku. Pokud mapa nebo její assety klienti nemají, musí se stáhnout.

Stahování obsahu. Tady jsou velká čísla, a tady rozhoduje nastavení, jestli zátěž ponese tvůj server:

  • Garry's Mod a další Source hry mohou vlastní obsah servírovat přímo z herního serveru, což je pomalé a soutěží to s hrou, nebo z webového serveru FastDL nastaveného přes sv_downloadurl, nebo ze Steam Workshopu přes resource.AddWorkshop v souboru Lua, takže klienti stahují ze Steamu místo od tebe. Nastavení popisuje Garry's Mod workshop a FastDL.
  • Resource packy v Minecraftu nastavené přes resource-pack= v server.properties se stahují z URL, kterou zadáš, ne ze serveru. Soubor umísti někam, kde unese zátěž, a nastav resource-pack-sha1, aby ho klienti cachovali.
  • FiveM streamuje vlastní vozidla, mapy a oblečení ze serveru ke každému hráči při připojení. Server s několika sty megabajty streamovaných assetů pošle několik set megabajtů každému novému hráči a hráči, kteří přijdou současně, sdílejí uplink. Omez, co streamuješ; jak na to, vysvětluje FiveM MLO mapy a streamované assety.
  • Factorio má pro stahování mapy vlastní limit v server-settings.json: max_upload_in_kilobytes_per_second (0 znamená neomezeně) a max_upload_slots, který omezuje, kolik hráčů může stahovat mapu najednou. Na domácím připojení tato nastavení zabrání tomu, aby jedno připojení zmrazilo hru všem ostatním.

Nastavení, která číslo mění#

Většina her nabízí pár páček. Jejich použití vyměňuje dohled nebo frekvenci aktualizací za pásmo, takže je používej k řešení skutečného problému, ne ze zvyku.

Minecraft

view-distance (výchozí 10) v server.properties je ten hlavní: počet chunků posílaných kolem každého hráče roste s jeho druhou mocninou, takže snížení z 10 na 8 ubere asi třetinu dat chunků. simulation-distance ovlivňuje CPU, ne pásmo. network-compression-threshold (výchozí 256) komprimuje každý paket větší než tolik bajtů; snížením ušetříš trochu pásma za cenu CPU a -1 kompresi vypíná, což dává smysl jen za proxy na stejném stroji. Paper přidává limity rychlosti posílání chunků na hráče v paper-global.yml; názvy klíčů se mezi verzemi měnily, proto se podívej do souboru, který tvůj build vygeneroval. Zbytek pokrývá optimalizace Paperu.

Hry na Source enginu

Provoz ke každému klientovi je omezen klientským nastavením rate (bajty za sekundu) a ohraničen serverovými sv_minrate a sv_maxrate. Ve hrách Source 1, jako jsou TF2 a Garry's Mod, sv_maxupdaterate omezuje, kolik aktualizací za sekundu každý klient dostane. CS2 změnilo síťový model a odstranilo několik starých cvarů pro jednotlivé klienty, takže konfigurace z dob CS:GO se nepřenese řádek po řádku - ověř si, která nastavení tvoje hra stále respektuje. Zvýšení tick rate ve hrách, které to dovolují, provoz zhruba úměrně zvyšuje: 128 aktualizací za sekundu stojí asi dvakrát tolik co 64. Kompromis vysvětluje co tick rate doopravdy znamená.

Arma 3

Arma je výslovně laditelná přes basic.cfg. Klíče jsou MaxMsgSend, MaxSizeGuaranteed, MaxSizeNonguaranteed, MinBandwidth, MaxBandwidth, MinErrorToSend a MinErrorToSendNear. MinBandwidth a MaxBandwidth říkají serveru, co smí předpokládat o vlastním připojení, a nastavit MaxBandwidth hluboko pod skutečnou kapacitu je klasická příčina desynchronizace na serveru, který má rezervu. MinErrorToSend určuje, jak daleko se objekt smí odchýlit, než se pošle aktualizace; menší hodnoty znamenají plynulejší pohyb ve vzdálenosti a víc provozu. Měň jednu věc po druhé a testuj s plnou misí.

Valheim

Vanilla Valheim žádné nastavení pásma nemá. Jeho vestavěná rychlost odesílání je konzervativní, což je jeden z důvodů, proč velké skupiny vidí rubber-banding poblíž rušných základen. Existují komunitní mody, které limit zvyšují a provoz komprimují, a musí být nainstalované na serveru a obvykle i u každého klienta. Kam pásmo zapadá mezi ostatní příčiny, vysvětluje výkon a lag Valheim serveru.

Diváci, proxy a relay#

Hráči nejsou jediní, komu server posílá data. Na tři další odběratele se při sčítání provozu snadno zapomene.

Relay pro diváky. Servery na Source enginu mohou provozovat SourceTV (v Counter-Strike GOTV), což je vlastně další klient, který přijímá kompletní stav hry a dál ho vysílá divákům. Herní server posílá jeden proud do relay; relay pak posílá proud každému divákovi. Na jednom stroji, který provozuje obojí, stojí každý divák zhruba stejně jako hráč. tv_maxclients omezuje, kolik se jich může dívat přímo, a turnaj s velkým publikem by měl diváky přesunout na samostatné relay místo na zápasový server. Nastavení pokrývá CS2 GOTV a dema.

Proxy před serverem. Minecraftová síť za Velocity nebo BungeeCord přenáší každý bajt na stroji s proxy dvakrát: dovnitř z backendu, ven k hráči. Pokud proxy a backendy sdílejí hostitele, úsek backend-proxy zůstává lokální a uplink nezatěžuje; pokud jsou na oddělených strojích, zatěžuje. Totéž platí pro každý tunel nebo relay před domácím serverem - provoz relay je provoz serveru plus totéž znovu v opačném směru. Co dalšího relay stojí, rozebírá tunely a proxy pro herní servery.

Stavové dotazy a monitoring. Každý web se seznamem serverů, stavový bot a scanner, který se serveru ptá, přidává malý, stálý pramínek. V běžný den je zanedbatelný. Při záplavě dotazů ne, a projeví se jako odchozí provoz bez jediného hráče online. Co se ptá a odpovídá, vysvětluje query porty a A2S.

Dimenzování uploadu podle počtu hráčů#

Výpočet je jednoduchý: hráči krát hodnota na hráče plus rezerva pro připojení a špičky. Koeficient 1,5 je rozumná rezerva pro běžnou hru; víc, pokud tvůj server stahuje obsah přes herní port.

ServerUstálený odchozí provozS rezervou 1.5x
10 hráčů v Minecraftu po 15 KB/s150 KB/s, 1.2 Mbit/s1.8 Mbit/s
10 hráčů ve Valheimu po 100 KB/s1 MB/s, 8 Mbit/s12 Mbit/s
24 hráčů v TF2 po 45 KB/s1.1 MB/s, 8.6 Mbit/s13 Mbit/s
32 hráčů v Project Zomboid po 40 KB/s1.3 MB/s, 10 Mbit/s15 Mbit/s
60 hráčů v Arma 3 po 120 KB/s7.2 MB/s, 58 Mbit/s86 Mbit/s

Pamatuj na převod: 1 MB/s je 8 Mbit/s. Rychlosti připojení se udávají v bitech, herní provoz se obvykle měří v bajtech, a když je zaměníš, vyjdou ti odpovědi osmkrát špatně.

U domácího serveru porovnej poslední sloupec se svým naměřeným uploadem pod zátěží, ne s číslem ve smlouvě. U hostovaného serveru jsou tato čísla hluboko v mezích běžného uplinku. Na RE:NODE je pásmo unmetered - neúčtuje se za gigabajt - což pokrývá každý herní server používaný běžným způsobem; není to svolení provozovat něco, co zahltí sdílený uplink, a šířka pásma a fair use o tom, kde ta hranice leží, mluví jasně.

Měření toho, co server skutečně odesílá#

Odhady stačí pro plánování. Když je něco špatně, měř.

Na Linuxovém stroji nebo VDS, který ovládáš:

bash
# Live totals per interface, refreshed every second$ vnstat -l -i eth0# Live traffic per remote address - who is the server talking to?$ sudo iftop -i eth0 -P# Live traffic per process$ sudo nethogs eth0

Vyděl odchozí rychlost počtem připojených hráčů a porovnej ji s tabulkou výše. Server, který posílá desetkrát víc, než se čeká, něco dělá: servíruje stahování z herního portu, plugin posílá příliš mnoho aktualizací, nebo odpovídá na záplavu query paketů. iftop ukáže, které z nich; pokud většina provozu míří na adresy, které nejsou hráči, nejde o hru. Jak záplava dotazů vypadá, popisuje co děláme proti útokům.

Ve hře samotné mají Source 1 hry na klientovi net_graph 1, který ukazuje příchozí a odchozí rychlosti a ztrátovost. Požádej hráče, ať čísla přečte, když je rušno; řekne ti to, co jeden klient doopravdy přijímá.

Když pásmo problémem není#

Většina „lagu“ na hostovaném serveru pásmo není. Hrubý způsob, jak to poznat:

  • Lagují všichni najednou a CPU serveru je vysoké. Server zmeškává ticky. To je problém CPU; viz CPU vs RAM u herních serverů.
  • Laguje jeden hráč a ostatním to jde. Jeho připojení: wifi, zahlcený domácí uplink, ztráta paketů na jeho trase.
  • Lag se objeví, když se někdo připojí. Na domácím serveru to může být pásmo; na hostovaném to bývá spíš CPU cena načítání chunků nebo oblastí pro nového hráče.
  • Rubber-banding jen poblíž rušných oblastí. Zátěž entit, nebo ve Valheimu hráč se slabým připojením, který vlastní zónu.

Jak za asi minutu poznat, na který z těchto případů se díváš, vysvětluje latence, jitter a ztráta paketů.

FAQ#

Kolik uploadu potřebuju pro Minecraft server?

Pro malou skupinu velmi málo: 10 hráčů potřebuje asi 1,2 Mbit/s ustáleně a několikanásobek, když se streamují nové chunky. Upload 10 Mbit/s stačí většině skupin kamarádů, pokud ho domácnost zároveň výrazně nevyužívá.

Spotřebuje větší svět víc pásma?

Samo o sobě ne. Pásmo závisí na tom, co je poblíž každého hráče, ne na velikosti světa. Větší svět spotřebuje víc disku a, když se hráči rozprostřou, víc CPU a paměti. Výjimkou je Factorio při připojení, kde se stahuje celý save.

Proč provoz po restartu vystřelí?

Všichni hráči se připojí najednou a stáhnou si oblast kolem sebe, nebo v některých hrách celou mapu. Taková špička je normální a krátká. Pokud doma způsobuje potíže, připojení rozlož v čase nebo omez rychlost stahování, kde to hra umožňuje.

Zvyšují mody pásmo?

Mody, které přidávají entity, efekty nebo časté aktualizace, zvyšují ustálený provoz. Mody, které přidávají obsah, zvyšují provoz při připojení, když si ho klienti musí stáhnout. Mody, které mění jen logiku serveru, obvykle nepřidají nic.

Stačí 100 Mbit/s pro herní server?

Pro jeden běžný herní server s velkou rezervou. I vytížený server Arma 3 zřídka potřebuje při špičce víc než pár desítek megabitů. To, co ti síť hostingu dává navíc, je rezerva pro špičky a pro pohlcení provozu, o který jsi nestál.


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.

0/2000