le forum de MineStrator

Nous ne cherchons pas à être un forum, mais le forum de référence pour les administrateurs et joueurs de serveurs minecraft, la communauté a besoin de toi, alors n'hésite pas à t'inscrire et à participer à la vie du forum !

[MineStrator] Mon serveur minecraft lag, pourquoi ?

Yoshun

Administrateur
Staff
Administrateur
#1
Bonjour et bienvenue dans ce tutoriel qui va vous expliquer dans les grandes lignes quelles sont les principales sources de lag d'un serveur et comment les analyser et y remédier pour que votre serveur retrouve une bonne jouabilité. Et avant toute chose, je tiens à préciser que ce tutoriel n'est pas exhaustif, je ne parlerai que des sources les plus connues et évidentes.

1 - Les principales sources de lag d'un serveur

1.1 - Quelques premières vérifications

Avant de commencer à parler des lags d'un serveur, il est bon de faire quelques vérifications de votre côté.
N'hésitez pas tout d'abord à vérifier la stabilité de votre connexion. Notez que la 4G, les VPN et autre wifi public peuvent provoquer des instabilités et vous pouvez ressentir ces fameux lags sans que cela ne concerne le serveur.
Dans un second temps, n'hésitez pas à vérifier s'il n'y a pas un incident en cours sur le réseau de votre opérateur ou sur le réseau de MineStrator (vérifiez vos tâches pour ça), c'est relativement rare mais ça peut arriver et ça reste une possibilité.
S'il n'y a pas de soucis au niveau de la connexion, alors le problème vient probablement du serveur et nous allons voir comment le vérifier.

1.2 - Les principales sources de lag

Vous avez deux méthodes pour vérifier que votre serveur a des lags :
- La première méthode consiste à utiliser la commande /tps (disponible avec Spigot, Paper ou avec un mod comme Spark) : un serveur en bonne santé sans lags est un serveur à 20TPS. Bien évidemment, 18TPS reste un score très honorable pour les serveurs avec une centaine de joueurs par exemple, les 20TPS reste la valeur idéale en théorie. Notez simplement que plus vos TPS sont bas, plus votre serveur aura des lags importants.
- La seconde méthode, c'est de vérifier la présence de ce message dans votre console :
[Server thread/WARN]: Can't keep up! Is the server overloaded? Running 22840ms or 456 ticks behind
Cette ligne indique que votre serveur n'arrive pas à effectuer tout ce qu'il doit faire dans un laps de temps "standard" et qu'il y a effectivement des lags (les chiffres peuvent varier évidemment mais plus ils sont haut, plus votre serveur aura des gros lags au point de devenir injouable).

Maintenant, il est temps de passer aux principales sources de lags d'un serveur Minecraft. Encore une fois, cette liste n'est pas exhaustive mais elle vous donnera déjà les plus évidentes :

- La génération des maps qui est certainement le processus le plus gourmand en terme de ressources pour votre serveur Minecraft. Quand un joueur explore, celui-ci charge des nouveaux chunks (donc création du fichier contenant les informations des chunks, ajout des possibles structures, intégration des possibles mods, etc ...). Et plus vous avez de joueurs qui explorent, plus le serveur utilisera ses ressources pour générer les chunks.

- Un trop grand nombre d'entités qui peut être aussi très problématique pour votre serveur. Plus il y a d'entités, plus le serveur doit faire tout un tas de calcul sur ces entités (la gestion du spawn, les mouvements, les actions, etc ...). Notez aussi qu'en parlant d'entités, je parle aussi des items (les tiles entities) qui se baladent dans les coffres/entonnoirs/minecart et autres blocs de ce type.

- Les bloc de commande (ou command blocks) trop nombreux ou trop gourmand à cause des fonctions enregistrées à l'intérieur.

- La view-distance renseignée dans le fichier server.properties de votre serveur. Cette valeur définit la quantité de données du monde du serveur envoyée au client, mesurée en tronçon (chunck) dans chaque direction du joueur. Et plus cette view-distance est élevée, plus le serveur va consommer de ressources pour transmettre toutes les données au client.

- Les datapack / plugins / mods de votre serveur. C'est très vague bien évidemment mais certains peuvent être très gourmands ou mal optimisés.

Il y a bien évidemment d'autres possibles sources de lags mais vous avez les principales avec cette liste.

2 - Les premiers réflexes à avoir pour réduire les lags
Il existe tout un tas de possibilités pour réduire les lags, certaines étant directement liées à la liste ci-dessus. Dans la liste ci-dessous, je vais vous donner les principales choses à faire pour améliorer les performances de votre serveur. Encore une fois, c'est une liste non exhaustive :

- La première chose à faire en terme de prévention de lag est de pré-générer vos maps. Cela permettra d'économiser beaucoup de ressources à votre serveur et d'éviter d'avoir des lags quand des joueurs exploreront les maps. Pour ça, vous devez utiliser un plugin comme ou encore un mod Forge comme

- Si vous jouez en Vanilla ou avec des plugins, installez Spigot ou Paper. Les versions Vanilla ou CraftBukkit sont loin d'être optimisées et Spigot/Paper permettent justement de pallier à ce manque d'optimisation. Une fois que l'un des deux est installé, n'hésitez pas à suivre ce premier tutoriel pour optimiser leurs configurations :

- Limitez le nombre d'entités de votre serveur. Pour ça, prenez dans un premier temps le soin d'analyser la configuration de Spigot et Paper, ils proposent justement différentes options pour réduire le nombre et le taux de spawn des entités. N'hésitez pas non plus à installer d'autres plugins comme
Attention aussi à ne pas être trop gourmand sur tous les blocs un peu spéciaux comme les entonnoirs, les pistons ou autre bloc de ce style.

- Vérifiez que vous êtes bien à jour sur vos versions. De nombreux plugins et de nombreux mods ont souvent des mises à jour pour régler des problèmes de performances.

Ces premiers réflexes devraient déjà vous permettre d'économiser quelques ressources sur votre serveur et de réduire voir supprimer les lags de votre serveur. Si les lags persistent, il y a certainement d'autres sources et c'est là qu'interviennent les deux outils que je vais vous présenter pour identifier ces sources.

3 - Analyser votre serveur pour trouver les sources des lags
Je vais donc vous présenter deux outils qui doivent être utilisés pour détecter les sources de lags de votre serveur : les timings et Spark.

3.1 - Les timing avec Spigot et Paper

Les timings sont le premier outil que je vais vous présenter. Un timing est une analyse de votre serveur pendant une certaine durée et qui va vous permettre de vérifier toute la consommation des différents éléments de votre serveur. Petite précision, les timings de Paper sont un peu plus complets et donnent plus d'informations que les timings de Spigot.

Pour faire un timing sur votre serveur, il suffit de faire ces deux commandes pendant les lags :
1) Faites la commande /timings on pour lancer un timing et attendez au moins 5 minutes le temps que l'analyse se fasse
2) Après au moins 5 minutes, faites la commande /timings paste. Le timing sera arrêté et vous obtiendrez un lien qui vous ouvrira une page web avec le rapport de l'analyse comme le screen ci-dessous

Pour l'exemple, voici un timing Spigot effectué sur un serveur standard sans aucun plugin en 1.15.2 :

timings.png
Ce timing nous indique plusieurs choses :
- Average Entities indique les entités actives / le nombre total d'entités sur le serveur pendant le timing. Average Players indique le nombre de joueurs connectés en moyenne pendant le timing et Average TPS indique le TPS moyen pendant le timing.
- On peut voir dans le tableau du dessous que 149% des ticks du serveur sont dédiés à la gestion des entités actives et que 143% des ticks sont dédiés à la seule gestion des zombies sur le serveur.

Pour le test, j'ai effectivement fait apparaître plusieurs centaines de zombies que j'ai concentré dans une seule zone. C'est bien évidemment un cas d'école mais dites-vous que ça reste une possibilité si plusieurs joueurs ont par exemple une ferme à poulet automatique sur votre serveur.
Un autre exemple, c'est quand votre map n'est pas pré-générée. Vous risquez d'avoir un fort pourcentage synonyme de lag sur le tableau du dessous avec un Event similaire à world - doChunkMap ou autre événement similaire sur les chunks.

3.2 - Spark avec Spigot, Paper et Forge

Spark est un autre outil d'analyse un peu plus précis que les timings et qui permet aussi d'obtenir d'autres types d'informations.
Si vous souhaitez utiliser Spark, je vous invite à consulter ce tutoriel : Analyser les lags de votre serveur avec Spark [1.8+]

-​

Avec ces deux outils, vous êtes normalement en mesure de trouver vous même les différentes sources de lags de votre serveur. Si vous avez toujours des lags après tout ça et que vous voulez que d'autres personnes vous aide à trouver les différentes sources de lags, n'hésitez pas à fournir un maximum de détails :
- Fournissez toujours une analyse complète avec un timing et une analyse Spark. Même si le contenu vous semble incompréhensible, c'est une véritable mine d'or remplie d'information sur votre serveur et c'est la première chose qu'on va vous demander de faire.
- Indiquez votre type de serveur et son contenu dans les grandes lignes. Par exemple, si vous avez un serveur avec des plugins ou des mods, n'hésitez pas à fournir la liste complète, cela peut donner des premières pistes de résolution aux autres personnes.
- Indiquez si vous avez bien les dernières versions des plugins et des mods sur votre serveur. Si ce n'est pas le cas, n'hésitez pas à fournir leurs versions.
- En bref, donnez un maximum de détails pour qu'on puisse vous aider du mieux possible.

C'est la fin de ce tutoriel, n'hésitez pas à venir sur le Discord de MineStrator si vous avez besoin d'aide pour analyser vos timings et vos analyses Spark.
Bon jeu :cool:
 

Haut