Optimisation du serveur FiveM : le guide ultime pour 2025
Public: Propriétaires de serveurs et administrateurs système expérimentés qui souhaitent pousser une instance de production FiveM à ses limites tout en maintenant la stabilité et la gestion des données conforme au RGPD.
But: Réduisez concrètement le temps d'image, réduisez la latence de jointure et libérez des cycles CPU sans gameplay compromettant.
Début – Mesurer avant de peaufiner
- Sauvegardez d'abord. Créez une copie hors site de l’intégralité de votre
données du serveurdossier et base de données. (voici comment sauvegarder) - Établir une série de références :
# Dans la console resmon 1 # métriques en direct – voir Section 1 profilemode server sv_maxclients 32 # correspond à la population actuelle pour des nombres comparables - Enregistrer:
- L'heure du tic-tac (MS)
- Utilisation moyenne de resmon par ressource
- Temps de connexion pour apparaître (chronomètre)
Pourquoi? L'optimisation sans base de référence est une question de conjectures. Conservez ces chiffres afin de pouvoir annuler toute modification qui aggraverait la situation.
En utilisant résmon Comme un pro (guide détaillé)

| Commande | Ce qu'il fait | Cible typique |
|---|---|---|
résmon 1 | Démarre le moniteur de ressources en direct. | Serveur de développement. |
resmon_log | Déverse les moyennes dans un fichier CSV. | Échantillonnage de production. |
Règles empiriques
- ≤ 0,40 ms utilisation inactive → conserver.
- 0,40 – 1,00 ms → optimiser bientôt.
- > 1,00 ms → refactoriser ou désactiver.
Si Processeur % les pointes coïncident avec ~33 FPS baisse du FPS du serveur, le goulot d'étranglement est votre scénario, pas de matériel hôte.
Ajustements au niveau de la configuration
2.1 serveur.cfg Essentiel
# Networking onesync on # mandatory for >32 slots sv_maxclients 64 # raise ONLY if tick time < 6 ms after optimisation sv_maxrate 65000 # bytes/s per client (≈ 520 kbps) sv_minrate 25000 sv_packetLoss 0.05 # disconnect if 5 % loss sustained # Performance set sv_enhancedDriver true # newer FXServer builds only sets gamename "gta5" # avoid legacy fallbacks
Note d'incertitude : sv_enhancedDriver est expérimental dans les artefacts < 6368 ; vérifiez le journal des modifications.
2.2 Système d'exploitation et hôte
- Ubuntu 22.04 LTS ou Windows Server 2022
- Désactiver les états C (BIOS) et définir Performance gouverneur
- Lier Serveur FX aux cœurs hautes performances :
ensemble de tâches-c 2-7 fxserver +exec server.cfg
3 · Optimisation au niveau des ressources
3.1 Refactoriser les boucles coûteuses
-- ⚠️ Anti-modèle (exécute chaque image) Citizen.CreateThread(function() while true do -- NO wait local p = PlayerPedId() SetPedInfiniteAmmoClip(p, true) end end) -- ✅ Bon : cache + délai local p = PlayerPedId() Citizen.CreateThread(function() while true do SetPedInfiniteAmmoClip(p, true) Wait(1000) -- 1 sec end end)
3.2 Tirer parti de la Optimiseur de script FiveM (IA) → essayez-le
Collez votre script Lua : le modèle signale les boucles infinies serrées, les natifs redondants et propose des suggestions de correctifs automatiques. Vérifiez toujours la sortie des différences ligne par ligne avant le déploiement.
3.3 Désactiver les ressources inutilisées
assurer Mettez uniquement ce dont vous avez réellement besoin. Commentez les scripts hérités :
# assure old_vehshop
3.4 Budget LOD / Streaming dynamique
Utilisez le r_drivepad cvar pour réduire la distance d'affichage pour le trafic IA lorsque FPS < 50 sur les clients.
Plus de conseils sur les actifs dans la section 4.
4 · Optimisation au niveau des actifs
| Type d'actif | Limite stricte | Outillage |
.cumul à ce jour texture | ≤ 16 Mio | Boîte à outils de texture, exportation GIMP DDS |
| Nombre de polygones des accessoires | ≤ 50 k | Blender décime + LODs automatiques |
.awc audio | 48 000 Hz mono | Rééchantillonnage d'Audacity |
Les données en streaming sont stockées dans la RAM. Conserver flux/ sous 1 Go pannes totales ou risque de pannes de mémoire du client.
Lectures complémentaires → Optimiser les temps de chargement.
5 · Base de données et E/S
- Utiliser mysql-async ou oxmysql; éviter la synchronisation
MySQL.Sync.fetchAllà l'intérieur des tiques. - Ajouter des index sur les colonnes fréquemment interrogées dans
SÉLECTIONNEZ ... OÙ ...clauses. - Mettez en cache les données immuables (par exemple, les noms de véhicules) dans les tables Lua, et non les hits de la base de données.
6 · Surveillance continue et protections contre la régression
- Automatisé chaque nuit
resmon_log 120– envoyer un fichier CSV à Grafana. - Hook de pré-validation Git invoquer l'optimiseur de script AI.
- Test de charge chaque PR avec ≥ double du nombre d'emplacements actuels.
Pointeurs côté serveur supplémentaires → Améliorer les performances : optimiser les scripts.
7 · Quand le matériel est le mur
- Ryzen 7 7800X3D > Intel i9‑14900K pour la latence monothread.
- 64 Go DDR5 6000 CL30 pour minimiser les défauts de page.
- SSD NVMe Gen 4 > 5000 Mo/s pour un streaming de cartes rapide.
Hôte avec au moins 1 Gbit/s haut/bas ; désactiver les plans vCPU partagés.
8 · RGPD et confidentialité
Faire pas enregistrer les adresses IP plus longtemps que nécessaire sur le plan opérationnel (considérant 39). Identifiants de hachage (SHA‑256) si vous avez besoin d'analyses.
Assurez-vous que tous les scripts d'analyse tiers sont définis SameSite=Lax et effacer lors de la déconnexion.
9 · Liste de contrôle (pour votre équipe d'administration)
Alors, que faire ? En résumé :
| # | Tâche | Action concrète / commandement | Critères de réussite |
|---|---|---|---|
| Pré-vol | |||
| 1 | Instantané et tag | tar -czf backup_$(date +%F).tgz ~/fivem/server-data && mysqldump -u root -p --single-transaction fivem > db.sqlBalise Git : git tag prod-$(date +%F) | Archives stockées hors site et Git CI vert |
| 2 | Parité des artefacts | Document FXServer build testé en staging (par exemple b6362) | Même numéro de build prêt en production |
| 3 | Fenêtre de maintenance | Informer les joueurs, définir sv_login_token "" ou activer txAdmin mode maintenance | Pas de nouvelles recrues ; les joueurs actuels sont avertis |
| Déployer | |||
| 4 | Arrêter les services proprement | txadmin stop ou Ctrl-C dans la console ; attendez « Enregistrement de la carte… » | Aucun processus FXServer orphelin |
| 5 | Mettre à niveau les binaires | Remplacer Serveur FX & alpin à partir du zip d'artefact validé | ./FXServer + définir la version montre une nouvelle construction |
| 6 | Appliquer optimisé serveur.cfg | Copier le fichier révisé ; exécuter +exec server.cfg +set comlint 1 | Aucune erreur « cvar inconnue » |
| 7 | Réduire les ressources | Déplacer les scripts inutilisés vers ressources-désactivées/; confirmer avec assurer liste | résmon affiche les entrées supprimées |
| 8 | Effacer et reconstruire le cache | rm -rf cache/* alors save_gta_cache macarte si les grandes cartes | Dossier de cache repeuplé |
| 9 | Migration de base de données | Courir MODIFIER/CRÉER UN INDEX scripts ; tester avec EXPLIQUER | Aucune analyse complète de la table dans le plan de requête |
| 10 | Début lié aux P-cores | ensemble de tâches -c 2-7 ./FXServer +exec server.cfg | Le serveur démarre ; l'affinité du processeur est correcte |
| Vérification (10 min) | |||
| 11 | Mesures en direct | résmon 1 dans la console | Aucune ressource > 1 ms d'inactivité prolongée |
| 12 | Échantillon automatisé | resmon_log 600 → CSV | Tick moyen ≤ 6 ms ; 99e ≤ 8 ms |
| 13 | Latence de connexion | Chronomètre de jointure pour spawn avec cache frais | Temps ≤ ligne de base – 10 % |
| 14 | Test de fumée fonctionnel | Téléportation, achat d'objet, conduite de véhicule, sauvegarde du garage | Les chemins de jeu principaux réussissent |
| Gardes post-déploiement | |||
| 15 | Flux Grafana | Cron : `resmon_log 120 | curl -XPOST …/influx` |
| 16 | Crochet de régression CI | Les exécutions de pré-validation diffèrent AI Script Optimizer ; bloque > +0,20 ms nouveau coût | Le crochet sort 0 uniquement sur le vert |
| 17 | Rotation et hachage des journaux | Cron : 24 h find logs/ -mtime +1 -exec shasum -a 256 {} ; -exec rm {} | IP conservées ≤ 24 h (considérant 39 du RGPD) gdpr-info.eu |
| 18 | Vérification de sauvegarde | Restaurer le dernier instantané sur la plateforme intermédiaire ; démarrer le serveur de test | Démarrage instantané ; données intactes |
| 19 | Notes de version | Publiez le journal des modifications et la fenêtre de disponibilité dans Discord ; archivez-les dans /docs/releases.md | Les parties prenantes reconnues |
| 20 | Plan de restauration prêt | git checkout prod- et copier le manifeste de sauvegarde précédent | Rollback testé en phase de staging |
Avant de mettre en ligne, gelez les binaires et la configuration, effectuez une sauvegarde propre, déployez avec l'affinité du processeur, réexécutez résmon jusqu'à ce que chaque ressource soit < 1 ms, et conservez les journaux IP pas plus de 24 heures pour rester sous la limitation de stockage du RGPD.
Conclusion
Établir une base de référence numérique, refactoriser les scripts lourds avec résmon et l'optimiseur d'IA, les actifs minces, le réglage serveur.cfg, et itérer jusqu'à ce que le temps de tick reste inférieur à 6 ms à charge maximale.






