{"id":148588,"date":"2024-07-25T16:14:29","date_gmt":"2024-07-25T14:14:29","guid":{"rendered":"https:\/\/hifivem.com\/?p=148588"},"modified":"2026-08-09T12:55:18","modified_gmt":"2026-08-09T10:55:18","slug":"comment-optimiser-les-performances-du-serveur-fivem","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/fr\/how-to-optimize-fivem-server-performance\/","title":{"rendered":"Comment optimiser les performances du serveur FiveM"},"content":{"rendered":"<p><strong>Commencez par mesurer l'\u00e9chec.<\/strong> Un faible FPS client, un temps de ressource \u00e9lev\u00e9, des saccades du serveur, des attentes de base de donn\u00e9es et une perte de r\u00e9seau sont des probl\u00e8mes diff\u00e9rents. Capturez une base de r\u00e9f\u00e9rence reproductible \u00e0 un nombre de joueurs repr\u00e9sentatif avant de supprimer des ressources ou de copier des convars d'un autre serveur.<\/p>\n<p class=\"translation-block\"><em>M\u00e9thode :<\/em> v\u00e9rifi\u00e9 le 9 ao\u00fbt 2026 \u00e0 partir du <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-manual\/debugging\/using-profiler\/\" rel=\"nofollow noopener\">guide du profileur<\/a>, des <a href=\"https:\/\/docs.fivem.net\/docs\/client-manual\/console-commands\/\" rel=\"nofollow noopener\">commandes de console du client<\/a> et des <a href=\"https:\/\/docs.fivem.net\/docs\/server-manual\/server-commands\/\" rel=\"nofollow noopener\">commandes de serveur<\/a> officiels de Cfx.re.<\/p>\n<h2 id=\"1-define-the-symptom-and-baseline\">1. D\u00e9finir le sympt\u00f4me et la ligne de base<\/h2>\n<ul>\n<li><strong>Les FPS d'un joueur chutent :<\/strong> reproduisez sur ce client et inspectez le moniteur de ressources client.<\/li>\n<li><strong>Tous les joueurs ont des saccades :<\/strong> enregistrez les avertissements de saccades du serveur, le temps des ressources, la latence de la base de donn\u00e9es et la saturation du processeur de l'h\u00f4te.<\/li>\n<li><strong>La connexion est lente :<\/strong> inspectez la taille des ressources diffus\u00e9es, le comportement de t\u00e9l\u00e9chargement et le travail d'initialisation.<\/li>\n<li><strong>Les actions sont lentes :<\/strong> tracez l'\u00e9v\u00e9nement et la requ\u00eate de la base de donn\u00e9es plut\u00f4t que de bl\u00e2mer les graphiques.<\/li>\n<\/ul>\n<p>Enregistrez la version de l'artefact, le nombre de joueurs, les ressources actives, l'itin\u00e9raire de test et les horodatages. Ne modifiez qu'une seule variable \u00e0 la fois.<\/p>\n<h2 id=\"2-use-resmon-and-the-profiler-correctly\">2. Utilisez correctement resmon et le profileur<\/h2>\n<p>Dans une configuration de d\u00e9veloppement autoris\u00e9e, ouvrez F8 et utilisez resmon true pour une comparaison rapide c\u00f4t\u00e9 client. Cfx.re classe resmon comme une commande de d\u00e9veloppeur ; un client normal peut refuser l'acc\u00e8s. Traitez-le comme un indicateur, pas un verdict : le timing varie en fonction de ce que le joueur fait. Reproduisez la m\u00eame interaction plusieurs fois. Pour des preuves au niveau du code, effectuez une capture du profileur pendant l'action lente et inspectez la port\u00e9e ou l'\u00e9v\u00e9nement co\u00fbteux.<\/p>\n<p class=\"translation-block\">Gardez le <a href=\"https:\/\/fivemx.com\/how-to-use-resmon-in-fivem-optimize-resources\/\">guide d\u00e9taill\u00e9 de resmon pour FiveM<\/a> ouvert pendant les tests.<\/p>\n<h2 id=\"3-fix-resource-code-at-the-bottleneck\">3. Corriger le code de la ressource au niveau du goulot d'\u00e9tranglement<\/h2>\n<ul>\n<li>Remplacez les boucles inconditionnelles par image par un travail \u00e9v\u00e9nementiel ou un intervalle d'attente justifi\u00e9.<\/li>\n<li>Validez les \u00e9v\u00e9nements r\u00e9seau sur le serveur et n'envoyez que les donn\u00e9es dont le client a besoin.<\/li>\n<li>\u00c9vitez de diffuser de grandes charges utiles lorsqu'un \u00e9v\u00e9nement cibl\u00e9 est suffisant.<\/li>\n<li>Mettez en cache les recherches stables, mais invalidez le cache lorsque l'\u00e9tat sous-jacent change.<\/li>\n<li>Profilez avant et apr\u00e8s ; un code plus court n'est pas automatiquement un code plus rapide.<\/li>\n<\/ul>\n<h2 id=\"4-check-database-work\">4. V\u00e9rifier le travail de la base de donn\u00e9es<\/h2>\n<p>Enregistrez les temps de requ\u00eate lente et les sites d'appel ; supprimez les identifiants et les donn\u00e9es des joueurs de tout exemple de requ\u00eate partag\u00e9. Ajoutez des index seulement apr\u00e8s avoir confirm\u00e9 le mod\u00e8le de requ\u00eate, et \u00e9vitez les requ\u00eates r\u00e9p\u00e9t\u00e9es \u00e0 l'int\u00e9rieur des boucles. Regroupez les \u00e9critures lorsque cela pr\u00e9serve l\u2019exactitude des donn\u00e9es. Testez les reconnexions, les sauvegardes planifi\u00e9es et les actions \u00e9conomiques de pointe, car une base de donn\u00e9es de staging vide peut masquer la latence de production.<\/p>\n<h2 id=\"5-budget-streamed-assets\">5. Budg\u00e9tiser les ressources diffus\u00e9es<\/h2>\n<p>V\u00e9rifiez les textures surdimensionn\u00e9es, les mod\u00e8les dupliqu\u00e9s et les packs de ressources qui diffusent beaucoup plus que ce que le serveur utilise. Testez une connexion propre et un emplacement tr\u00e8s fr\u00e9quent\u00e9. V\u00e9rifiez les niveaux de d\u00e9tail, la r\u00e9solution des textures et l'int\u00e9grit\u00e9 des fichiers avant de compresser ou de supprimer des ressources. Un t\u00e9l\u00e9versement corrompu peut ressembler \u00e0 un probl\u00e8me de performance.<\/p>\n<h2 id=\"6-separate-host-limits-from-script-limits\">6. S\u00e9parez les limites de l'h\u00f4te des limites du script<\/h2>\n<p>Surveillez la saturation du CPU par c\u0153ur, la pression de la m\u00e9moire, la latence du stockage, la perte de paquets et l'emplacement de la base de donn\u00e9es. Les charges de travail FiveM peuvent saturer un c\u0153ur occup\u00e9 alors que le CPU total semble encore faible. Comparez les h\u00f4tes avec la m\u00eame version et la m\u00eame charge ; la RAM et les emplacements annonc\u00e9s ne prouvent pas \u00e0 eux seuls la capacit\u00e9.<\/p>\n<h2 id=\"7-roll-out-and-monitor\">7. D\u00e9ployer et surveiller<\/h2>\n<ol>\n<li>Sauvegardez la ressource, la configuration et les tables de base de donn\u00e9es affect\u00e9es.<\/li>\n<li>D\u00e9ployez une correction mesur\u00e9e en staging.<\/li>\n<li>R\u00e9p\u00e9tez le sc\u00e9nario de r\u00e9f\u00e9rence et comparez les m\u00eames m\u00e9triques.<\/li>\n<li>D\u00e9ployez pendant une fen\u00eatre contr\u00f4l\u00e9e et surveillez les rapports de blocage, d'erreur et de joueurs.<\/li>\n<li>Annulez imm\u00e9diatement si la m\u00e9trique cible ou le flux de jeu r\u00e9gresse.<\/li>\n<\/ol>\n<p>L'optimisation n'est compl\u00e8te que lorsque le sympt\u00f4me mesur\u00e9 s'am\u00e9liore sans d\u00e9placer la d\u00e9faillance ailleurs.<\/p>","protected":false},"excerpt":{"rendered":"<p>Commencez par mesurer l'\u00e9chec. Un faible FPS client, un temps de ressource \u00e9lev\u00e9, des saccades du serveur, des attentes de base de donn\u00e9es et une perte de r\u00e9seau sont des probl\u00e8mes diff\u00e9rents. Capturez une base de r\u00e9f\u00e9rence reproductible \u00e0 un nombre de joueurs repr\u00e9sentatif avant de supprimer des ressources ou de copier des convars d'un autre serveur.<\/p>","protected":false},"author":1,"featured_media":185845,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2881,1899],"tags":[],"class_list":["post-148588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","category-tutorials"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/148588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/comments?post=148588"}],"version-history":[{"count":5,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/148588\/revisions"}],"predecessor-version":[{"id":212509,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/148588\/revisions\/212509"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media\/185845"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=148588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/categories?post=148588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/tags?post=148588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}