Risparmia oggi con 20% Usa il codice WELCOME al pagamento. WELCOME

Ottimizzazione del server FiveM: il manuale definitivo per il 2025

Pubblico: Proprietari di server e amministratori di sistema esperti che desiderano portare al limite un'istanza FiveM di produzione, mantenendo al contempo stabilità e una gestione dei dati conforme al GDPR.

Obiettivo: Ridurre concretamente il tempo di frame, ridurre la latenza di join e liberare cicli di CPU senza compromettere il gameplay.


Inizia – Misura prima di modificare

  1. Prima il backup. Crea una copia esterna del tuo intero dati del server cartella e database. (ecco come effettuare il backup)
  2. Stabilire una corsa di riferimento:# Nella console resmon 1 # metriche live – vedere Sezione 1 profilemode server sv_maxclients 32 # corrispondenza popolazione corrente per numeri di confronto
  3. Documentazione:
    • Tempo di spunta (SM)
    • Utilizzo medio di risonanze per risorsa
    • Tempo di join-to-spawn (cronometro)

Perché? L'ottimizzazione senza una base di riferimento è un'operazione azzardata. Memorizza questi numeri in modo da poter annullare qualsiasi modifica che peggiori la situazione.


Utilizzo resmon Come un professionista (guida dettagliata)

Screenshot della console FiveM Resmon
ComandoCosa faObiettivo tipico
resmon 1Avvia il monitoraggio delle risorse in tempo reale.Server di sviluppo.
resmon_logScarica le medie in un file CSV.Campionamento di produzione.

Regole pratiche

  • ≤ 0,40 ms utilizzo inattivo → mantenere.
  • 0,40 – 1,00 ms → ottimizzare presto.
  • > 1,00 ms → rielaborare o disabilitare.

Se Processore % le punte coincidono con ~33 FPS gli FPS del server diminuiscono, il collo di bottiglia è il tuo copione, non hardware host.


Modifiche a livello di configurazione

2.1 server.cfg Elementi essenziali

# Rete
onesync on              # obbligatorio per >32 slot
sv_maxclients 64        # aumentare SOLO se il tempo di tick < 6 ms dopo l'ottimizzazione
sv_maxrate 65000        # byte/s per client (≈ 520 kbps)
sv_minrate 25000
sv_packetLoss 0.05      # disconnessione se si mantiene una perdita del 5 %
# Prestazioni
set sv_enhancedDriver true   # solo build FXServer più recenti
sets gamename "gta5"          # evitare fallback legacy

Nota di incertezza: sv_enhancedDriver è sperimentale negli artefatti < 6368; verificare il changelog.

2.2 Sistema operativo e host

  • Ubuntu 22.04 LTS o Windows Server 2022
  • Disabilitare gli stati C (BIOS) e impostare Prestazione governatore
  • Legamento Server FX ai core ad alte prestazioni:set di attività -c 2-7 fxserver +exec server.cfg

3 · Ottimizzazione a livello di risorse

3.1 Rifattorizzare i cicli costosi

-- ⚠️ Anti‑pattern (esegue ogni frame) Citizen.CreateThread(function() while true do -- NO wait local p = PlayerPedId() SetPedInfiniteAmmoClip(p, true) end end) -- ✅ Buono: cache + ritardo local p = PlayerPedId() Citizen.CreateThread(function() while true do SetPedInfiniteAmmoClip(p, true) Wait(1000) -- 1 sec end end)

3.2 Sfruttare il Ottimizzatore di script FiveM (AI) → provalo

Incolla il tuo script Lua: il modello segnala loop infiniti stretti, nativi ridondanti e offre suggerimenti di patch automatiche. Controlla sempre l'output diff riga per riga prima di procedere alla distribuzione.

3.3 Disabilitare le risorse inutilizzate

garantire solo ciò di cui hai effettivamente bisogno. Commenta gli script legacy:

# assicura old_vehshop

3.4 LOD dinamico / Budget di streaming

Utilizzare il r_drivepad cvar per ridurre la distanza di visualizzazione per il traffico AI quando FPS < 50 sui client.

Ulteriori consigli sugli asset sono disponibili nella Sezione 4.


4 · Ottimizzazione a livello di asset

Tipo di risorsaLimite massimoUtensili
.anno corrente struttura≤ 16 MiBTexture Toolkit, esportazione GIMP DDS
Conteggio poligonale di Prop≤ 50 kBlender decima + LOD automatici
.awc audio48000 Hz monoRicampionamento di Audacity

I dati trasmessi in streaming risiedono nella RAM. Mantieni flusso/ Sotto 1 GB totale o rischio di crash del client per mancanza di memoria.

Ulteriori letture → Ottimizzare i tempi di caricamento.


5 · Database e I/O

  • Utilizzo mysql-asincrono O oxmysql; evitare sincronismo MySQL.Sync.fetchAll zecche interne.
  • Aggiungere indici sulle colonne interrogate frequentemente in SELEZIONA ... DOVE ... clausole.
  • Memorizza nella cache i dati immutabili (ad esempio i nomi dei veicoli) nelle tabelle Lua, non nei risultati del DB.

6 · Monitoraggio continuo e protezioni di regressione

  1. Automatizzato ogni notte resmon_log 120 – trasferire CSV a Grafana.
  2. Hook di pre-commit git richiamando l'AI Script Optimizer.
  3. Test di carico ogni PR con ≥ doppio del numero di slot correnti.

Ulteriori puntatori lato server → Migliorare le prestazioni: ottimizzare gli script.


7 · Quando l'hardware è il muro

  • Ryzen 7 7800X3D > Intel i9‑14900K per latenza single-thread.
  • 64 GB DDR5 6000 CL30 per ridurre al minimo gli errori di pagina.
  • SSD NVMe Gen 4 > 5000 MB/s per lo streaming veloce delle mappe.

Ospita con almeno 1 Gbps su/giù; disabilita i piani vCPU condivisi.


8 · GDPR e privacy

Fare non registrano gli IP più a lungo del necessario a livello operativo (considerando 39). Identificatori hash (SHA‑256) se hai bisogno di analisi.

Assicurati che tutti gli script di analisi di terze parti siano impostati SameSite=Lax e cancella al momento del logout.


9 · Lista di controllo (per il tuo team amministrativo)

Quindi, cosa fare? Ecco in sintesi:

#CompitoAzione/comando concretoCriteri di superamento
Pre-volo
1Istantanea e tagtar -czf backup_$(data +%F).tgz ~/fivem/server-data && mysqldump -u root -p --single-transaction fivem > db.sql
Etichetta Git: git tag prod-$(data +%F)
Archivi archiviati fuori sede e Git CI verde
2Parità degli artefattiDocumento FXServer build testato in staging (ad esempio b6362)Stesso numero di build pronto per la produzione
3Finestra di manutenzioneInformare i giocatori, impostare token di accesso sv "" o abilita txAdmin modalità di manutenzioneNessun nuovo arrivo; giocatori attuali avvisati
Distribuire
4Interrompere i servizi in modo pulitoarresto txadmin O Ctrl-C nella console; attendi “Salvataggio mappa…”Nessun processo FXServer orfano
5Aggiorna i binariSostituire Server FX e alpino da zip di artefatto convalidato./FXServer +imposta versione mostra la nuova build
6Applica ottimizzato server.cfgCopia il file revisionato; esegui +exec server.cfg +set comlint 1Nessun errore "cvar sconosciuto"
7Ridurre le risorseSposta gli script non utilizzati in risorse-disabilitate/; confermare con garantire listaresmon mostra le voci rimosse
8Cancella e ricostruisci la cacherm -rf cache/* Poi salva_gta_cache la mia mappa se mappe di grandi dimensioniCartella cache ripopolata
9Migrazione del databaseCorrere MODIFICARE/CREA INDICE script; test con SPIEGARENessuna scansione completa della tabella nel piano di query
10Inizio vincolato ai core Pset di attività -c 2-7 ./FXServer +exec server.cfgAvvio del server; affinità CPU corretta
Verifica (10 min)
11Metriche in tempo realeresmon 1 nella consoleNessuna risorsa > 1 ms inattivo a lungo termine
12Campione automatizzatoresmon_log 600 → CSVTick medio ≤ 6 ms; 99-esimo ≤ 8 ms
13Latenza di adesioneCronometro per l'unione e la generazione con cache nuovaTempo ≤ baseline – 10 %
14Test funzionale del fumoTeletrasporto, acquisto oggetto, guida veicolo, salvataggio garageI percorsi di gioco principali hanno successo
Guardie post-schieramento
15Feed GrafanaCron: `resmon_log 120curl -XPOST …/influsso`
16Gancio di regressione CIEsegue il pre-commit AI Script Optimizer diff; blocca > +0,20 ms nuovo costoIl gancio esce solo da 0 sul verde
17Rotazione dei log e hashingCron: 24 ore trova logs/ -mtime +1 -exec shasum -a 256 {} ; -exec rm {}IP conservati ≤ 24 ore (considerando 39 del GDPR) gdpr-info.eu
18Verifica del backupRipristina l'ultimo snapshot nello staging; avvia il test-serverAvvio snapshot; dati intatti
19Note di rilascioPubblica il changelog e la finestra di uptime su Discord; archivia in /docs/releases.mdLe parti interessate sono state riconosciute
20Piano di rollback prontogit checkout prod- e copia il manifesto del backup precedenteRollback testato in staging

Prima di andare in diretta, congelare i binari e la configurazione, creare un backup pulito, distribuire con affinità CPU, eseguire nuovamente resmon finché ogni risorsa non raggiunge < 1 ms e conserva i log IP per non più di 24 ore per rientrare nei limiti di archiviazione del GDPR.


Conclusione

Stabilisci una base numerica, rielabora gli script pesanti con resmon e l'ottimizzatore AI, risorse snelle, sintonizzazione server.cfge ripetere finché il tempo di tick non rimane al di sotto di 6 ms al picco di carico.


Fonti

Luca
Luca

Mi chiamo Luke, sono un giocatore e amo scrivere di FiveM, GTA e giochi di ruolo. Gestisco una community di gioco di ruolo e ho circa 10 anni di esperienza nell'amministrazione di server.

Articoli: 436

Lascia una risposta