Sari la conținutul principal

Optimizarea serverului Rust

Cum îmbunătățești performanța serverului Rust

Performanța serverului este ceea ce îi împiedică pe jucători să piardă lupte din cauza lagului și să fie aruncați de pe stânci din cauza rubber-banding-ului. Cea mai mare parte se reduce la trei lucruri: viteza de ceas a CPU-ului, pluginurile pe care le rulezi și vreo cinci convar-uri.

  • Ghiduri Rust
  • Actualizat la
  • 9 min de citit
  • Viteza de ceas a CPU-ului
  • Costul pluginurilor
  • 5 convar-uri cheie
CONVAR-URI CHEIEserver.cfgbatching.colliders "0" # reactivează peste 265k entităținav_disable "true" # animalele și NPC-urile se opresc din mișcareserver.saveinterval "600"ai.think 0fps.max 30 # 30 până la 100 este intervalul util

Răspunsul scurt

Elimină mai întâi pluginurile prost optimizate, pentru că acestea costă mai mult decât toate celelalte la un loc. Apoi setează batching.colliders "0", plafonează fps.max între 30 și 100, crește server.saveinterval "600", și ia în calcul nav_disable "true" și ai.think 0 dacă poți trăi fără mișcarea animalelor.

Puncte cheie

  • Rust are nevoie de viteză de ceas, nu de număr de nuclee. Funcțiile de bază ale Unity sunt single threaded.
  • Un singur plugin prost codat poate anula orice altă optimizare de pe această pagină.
  • FPS-ul serverului nu este FPS-ul jucătorului. Sunt cifre diferite care măsoară lucruri diferite.
  • Măsoară cu pluginul Performance Monitor, apoi elimină-l. Și el costă performanță.
  • Fiecare convar de aici este un compromis. Află la ce renunți înainte să îl setezi.

Ce afectează de fapt performanța

Performanța constantă este ceea ce îi asigură pe jucătorii tăi că au un loc sigur în care să joace, unde nu vor pierde o luptă din cauza lagului sau nu vor fi aruncați de pe o stâncă din cauza rubber-banding-ului. Merită să fii precis despre de unde provine, pentru că timpul petrecut pe lucrul greșit este pierdut.

Aproximativ în ordinea impactului:

  1. Pluginurile. Unul singur, prost scris, poate domina fiecare tick al serverului.
  2. Viteza de ceas a CPU-ului. Plafonul sub care operează tot restul.
  3. Numărul de entități. Târziu într-un ciclu de wipe, acesta este lucrul care se schimbă sub tine.
  4. Operațiile de salvare. Pe o lume mare, se observă de fiecare dată când rulează.

Hardware: viteza de ceas în detrimentul numărului de nuclee

Vei observa o performanță mult mai bună a serverului de la furnizorii care folosesc CPU-uri mai rapide, cu o frecvență de peste 3GHz. Motivul este arhitectural, nu întâmplător: funcțiile de bază ale Unity sunt single threaded, deci rulează pe un singur nucleu și nu pot fi distribuite pe altele. Un CPU cu 32 de nuclee la 2.2GHz va rula un server Rust mai prost decât unul cu 8 nuclee la 4GHz.

Numărul de nuclee nu este irelevant. Lucruri precum AI-ul NPC-urilor și al animalelor, și alte obiecte legate de hartă, pot fi distribuite pe mai multe nuclee, motiv pentru care serverele cu populație mai mare beneficiază cu adevărat de nuclee suplimentare. Un host bun ar trebui să ofere opțiunea de mai multe nuclee pentru un server mai mare și ar trebui, în primul rând, să găzduiască Rust pe CPU-uri de frecvență mare.

Acesta este cel mai util lucru de verificat înainte să cumperi. Dacă un host promovează numărul de nuclee și RAM-ul, dar nu viteza de ceas, de obicei este pentru că viteza de ceas nu este argumentul de vânzare.

Pluginuri: cel mai mare factor

uMod este un addon de modding pentru Rust care permite serverelor să ruleze pluginuri dezvoltate în mare parte de comunitate. Performanța serverului nu va fi afectată de pluginuri bine scrise și întreținute activ.

Va fi distrusă de unul prost. Fără să știi, o mică bucată de cod din oricare dintre pluginurile tale poate degrada sever performanța serverului, și nimic legat de mărimea sau simplitatea aparentă a unui plugin nu îți spune care anume. Chiar și cel mai mic și mai ușor plugin poate provoca haos, așa cum va confirma orice proprietar de server Rust sau dezvoltator de pluginuri cu experiență.

Evită să rulezi prea multe pluginuri. Numărul în sine are un cost, independent de calitatea fiecăruia în parte, iar răspunsul la o problemă este mai des eliminarea unui plugin decât adăugarea unuia.

Optimizarea pluginurilor pe care le păstrezi

Unele pluginuri expun setări de optimizare a performanței, cum ar fi timere și intervale. Acestea sunt de obicei dezactivate implicit sau setate conservator. Caută-le în fișierul de configurare al pluginului și activează-le, pentru că un plugin care verifică la fiecare tick când ar putea verifica la fiecare treizeci de secunde face de treizeci de ori mai multă muncă decât are nevoie.

Măsurarea înainte să schimbi orice

A ghici problemele de performanță irosește timp. Există două măsurători care merită făcute.

FPS-ul serverului

Acesta este ritmul de cadre la care operează serverul. Nu are nicio influență directă asupra ritmului de cadre al jucătorilor tăi, deși un număr mare de entități într-o zonă le va afecta pe amândouă. Monitorizează-l prin RCON cu comanda FPS.

Pluginul Performance Monitor

Performance Monitor pentru uMod raportează în timp real informații despre utilizarea memoriei, timpul de hook al pluginurilor și alți timpi care afectează performanța serverului. Îți arată care plugin consumă cel mai mult timp pe un singur hook, transformând "serverul se simte prost" într-un nume concret.

Nu lăsa Performance Monitor să ruleze la nesfârșit. Monitorizarea în sine consumă resurse și va înrăutăți performanța pe care încerci să o măsori. Instalează-l, ia citirile, acționează în funcție de ele, apoi descarcă-l.

Convar-urile care contează

Fiecare dintre acestea este un compromis, nu performanță gratuită. Câștigurile sunt reale, la fel ca și lucrurile la care renunți.

batching.colliders "0"

Elimină nevoia serverului de a grupa entitățile în batch-uri. Este un câștig mare de performanță: cu batching-ul activat, de fiecare dată când cineva construiește, serverul trebuie să degrupeze și apoi să regrupeze toate entitățile asociate.

Rezerva: dacă serverul tău depășește 265.000 de entități, va trebui să îl reactivezi pentru a ocoli limita de entități a Unity. Târziu într-un ciclu lung de wipe pe un server aglomerat, acesta este un număr real, nu unul teoretic, așa că merită urmărit.

nav_disable "true"

Dezactivează NAV mesh-ul de pe serverul tău. Câștigul de performanță este mare. Costul este că animalele și NPC-urile se opresc complet din mișcare.

Dacă asta este acceptabil depinde de serverul tău. Pe un server axat puternic pe PvP, unde nimeni nu vânează căprioare, este aproape gratuit. Pe un server PvE sau de roleplay, elimină o parte importantă a jocului.

ai.think 0

Poate ai observat pe servere mari că animalele nu reacționează și nu se apără. Asta este ai.think setat pe 0. Are un efect pozitiv semnificativ asupra performanței, în special când numărul de jucători este mare și jucătorii sunt des aproape de animale.

server.saveinterval "600"

Poți observa scăderi de FPS pe server atunci când acesta salvează, pe un server cu multe entități. Creșterea duratei dintre salvări menține acest lucru la minim.

Compromisul aici este riscul: un interval mai lung înseamnă mai mult progres pierdut dacă serverul se blochează între salvări. 600 de secunde este un echilibru rezonabil, dar dacă serverul tău este instabil din alte motive, nu trata simptomul făcând blocările mai costisitoare.

fps.max

Controlarea FPS-ului serverului tău este, în general, o idee bună, pentru a opri serverul din a lucra mai mult decât are nevoie, fără niciun beneficiu pentru jucătorii tăi. Facepunch au spus că jucătorii nu ar observa un server limitat la 30 de cadre pe secundă. Setarea fps.max la un număr între 30 și 100 este puternic recomandată.

Reporniri

Repornirile zilnice pot ajuta performanța pe serverele moddate. Procesele care rulează mult timp acumulează presiune asupra memoriei, iar pluginurile care au scurgeri lente sunt destul de comune încât o repornire programată este o asigurare rezonabilă.

Programează-le într-o oră liniștită și anunță-le. global.restart le oferă jucătorilor un avertisment de 300 de secunde la intervale de 5 secunde, ceea ce este suficient timp pentru a ajunge într-un loc sigur. O repornire silențioasă în mijlocul unui raid te va costa mai mulți jucători decât câștigul de performanță pe care ți-l aduce.

Ce să faci, în ordine

  1. Măsoară mai întâi

    Verifică FPS-ul serverului prin RCON și rulează pe scurt Performance Monitor. Fără un punct de referință nu poți spune dacă ceva din ce ai făcut a ajutat.

  2. Elimină cel mai rău plugin

    Orice a indicat monitorul. Este aproape întotdeauna cel mai mare câștig disponibil, și este gratuit.

  3. Reglează pluginurile pe care le păstrezi

    Timere și intervale în fișierele lor de configurare, acolo unde există.

  4. Aplică convar-urile

    Începe cu batching.colliders "0", fps.max și server.saveinterval, care nu te costă nimic ce jucătorii tăi vor observa. Ia în calcul nav_disable și ai.think doar dacă poți accepta viața sălbatică statică.

  5. Măsoară din nou

    Aceleași instrumente, aceleași condiții, ideal cu un număr similar de jucători. Apoi descarcă monitorul.

  6. Uită-te la hardware

    Dacă ai făcut toate cele de mai sus și performanța este tot slabă, plafonul este CPU-ul, și nicio configurare nu poate depăși asta.

Dacă ai ajuns la acest ultim pas, ghidul nostru despre ce să urmărești când cumperi un server Rust acoperă ce să întrebi un host înainte să te muți.

Mai multe ghiduri pentru cei care își administrează propriul server Rust.

Răspunsuri rapide

Întrebări frecvente

În ordinea impactului: un plugin prost scris care consumă timp de hook, un CPU cu viteză de ceas scăzută, un număr foarte mare de entități și operațiile de salvare pe o lume mare. Pluginurile sunt vinovatul obișnuit pentru că unul singur, prost codat, poate domina fiecare tick indiferent cât de bun este hardware-ul.

Viteza de ceas contează mai mult decât numărul de nuclee. Funcțiile de bază ale Unity sunt single threaded, așa că un CPU cu o frecvență peste 3GHz face o diferență dramatică. Nucleele suplimentare ajută la munca legată de AI și hartă, motiv pentru care serverele cu populație mai mare beneficiază de ele, dar un CPU cu multe nuclee și frecvență scăzută este forma greșită pentru Rust.

Undeva între 30 și 100. Facepunch au spus că jucătorii nu vor observa un server limitat la 30 de cadre pe secundă, iar a lăsa serverul să lucreze mai mult decât e nevoie nu aduce niciun beneficiu jucătorilor tăi. Plafonarea eliberează capacitate pentru munca care chiar afectează gameplay-ul.

Da, semnificativ, dar cu un cost. Setarea nav_disable "true" dezactivează NAV mesh-ul, ceea ce oferă un câștig mare de performanță și oprește complet mișcarea animalelor și a NPC-urilor. Dacă acest compromis este acceptabil depinde în întregime de tipul de server pe care îl rulezi.

Elimină nevoia serverului de a grupa entitățile în batch-uri. Este un câștig mare de performanță, pentru că atunci când batching-ul este activat, serverul trebuie să degrupeze și să regrupeze toate entitățile asociate de fiecare dată când cineva construiește. Rezerva este reală: peste 265.000 de entități trebuie să îl reactivezi pentru a ocoli limita de entități a Unity.

Folosește pluginul Performance Monitor pentru uMod, care raportează utilizarea memoriei și timpii de hook ai pluginurilor și îți arată care plugin consumă cel mai mult timp pe un singur hook. Nu îl lăsa să ruleze permanent, pentru că monitorizarea în sine costă performanță.

Găzduire Rust pe hardware cu viteză de ceas mare

Rust este single threaded acolo unde contează, motiv pentru care îl rulăm pe CPU-uri de frecvență mare în propriul nostru centru de date din UK, nu pe orice are cele mai multe nuclee.

  • Centru de date în UK
  • CPU-uri de frecvență mare
  • Suport prin tichet și Discord