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
# Réseau onesync on # obligatoire pour >32 slots sv_maxclients 64 # augmenter UNIQUEMENT si le temps de tick < 6 ms après optimisation sv_maxrate 65000 # octets/s par client (≈ 520 kbps) sv_minrate 25000 sv_packetLoss 0.05 # déconnexion si 5 % de perte soutenue # Performance set sv_enhancedDriver true # uniquement pour les builds FXServer récentes sets gamename "gta5" # éviter les replis hérités
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‑pattern (s'exécute à chaque frame) Citizen.CreateThread(function() while true do -- PAS de 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 seconde 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 | 48000 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 rechercher les journaux/ -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.
Sources
- Comment optimiser les performances du serveur FiveM
- Optimiser les temps de chargement
- Améliorer les performances – optimiser les scripts
- FiveM Script Optimizer (outil d'IA)
- Comment utiliser resmon
Après que la performance est stable, auditez le chemin complet de la découverte à la connexion avec le guide de la liste de serveurs FiveM.