Optimiser un serveur pour 100+ joueurs
Faites passer votre serveur FiveM à l'échelle : OneSync, artefacts, scripts lourds, base de données et métriques txAdmin.
Optimiser un serveur pour 100+ joueurs
Au-delà d’une centaine de joueurs simultanés, les limites par défaut du serveur et les scripts client mal écrits deviennent le goulot d’étranglement. L’optimisation vise trois cibles : le réseau, le CPU serveur et la base de données.
Cause / Le problème
Les chutes de tickrate et les désync viennent le plus souvent d’artefacts obsolètes, d’un serveur non-OneSync, de boucles client qui tournent à chaque frame (while true do sans Wait), ou de requêtes SQL non indexées exécutées pour chaque joueur. Plus le slot count monte, plus ces problèmes se cumulent.
Solution
- Activez OneSync dans
server.cfg:
OneSync gère nativement la synchronisation des entités au-delà de 32 joueurs.set onesync on set onesync_population true - Mettez à jour les artefacts serveur (Linux ou Windows) depuis le site officiel Cfx.re. Une build récente corrige des fuites mémoire et améliore le réseau.
- Ajustez les limites d’entités avec prudence : ne montez
sv_enforceGameBuildque si un DLC le requiert, sinon le client charge des assets inutiles. - Allégez les scripts client. Repérez les boucles sans
Wait, lesCitizen.Wait(0)systématiques et lesDrawMarkerpar dizaines. Utilisez le Resource Monitor pour cibler les ressources gourmandes. - Optimisez la base de données. Ajoutez des index sur les colonnes
identifieretownerdes tables players/vehicles, et passez à oxmysql (préparé statements + pool) plutôt qu’aux vieux drivers MySQL asynchrones. - Surveillez txAdmin. L’onglet Metrics affiche le tickrate, le CPU et la RAM en temps réel. Un tickrate sous 30 ms indique qu’une ressource monopolise le thread principal.
Surveillez aussi le réseau : un set sv_maxClients 128 n’est réaliste que si la machine dispose du CPU et de la bande passante correspondants.