Tutoriel Améliorer ses TPS / Corriger les lags et roll-backs

Fuizziy

Développeur Java - Ancien fondateur d'YCraft
28 Janvier 2012
60
3
84
Beaucoup se demande comment faire. Les TPS, pour ceux qui ne savent pas ce que c'est, c'est une créature des ténèbres, avec 20 rangées de dents qui vous grignote de plus en plus au fur et à mesure que vous vous y enfoncez ! Le pire cauchemar des fondateurs, c'est ça. Littéralement traduit par: Tick Per Seconds (Autrement dit le nombre de tick dans une seconde) il est meilleur lorsqu'il est proche de 20, car dans minecraft une seconde normale représente 20 ticks. Si votre TPS est de 4, vous aurez 4 ticks dans une seconde au lieu de 20, par conséquent le temps en sera d'autant plus modifié (5x plus lent pour les entités, ce qui comprend par exemple la pousse des plantations ou les circuits en redstone)
Le croyance générale est de vous laisser penser que Spigot au lieu de craftbukkit est une des meilleure solution. Mettez le mec qui vous a dit ça dans un colis et - s'il vous plait - envoyez le très loin et très vite, en cargo ou en avion. Spigot n'améliorera généralement vos TPS que de 1/2 grand maximum car un de ses seuls et principaux atouts techniques est qu'il gère mieux les "Threads" de vos serveurs ainsi que les chunks, pèse moins lourd et est plus simple. Installez-le si bon vous semble mais ne vous arrêtez pas là !

C'est bon, je vous ai suffisamment expliqué le "qui" ? On passe au "quoi" ! Les chutes de TPS sont provoquées par une surcharge du système, souvent traduite dans votre console par un message répugnant (que vous pouvez désactivez dans votre bukkit/spigot.yml) comprenant une insanité comme: "Did the system change, or the server is overloaded ?" . Lorsqu'il y a trop d'entité / De chunks (mal gérés ?) votre monde est freiné et donc votre serveur en général ! Comprenez-le, il ne sais plus où regarder ! Faut-il s'occuper des 200 poules du Joueur A ou des 10 clocks redstone du joueur B ??? C'est là que votre serveur se met à crier au secours, en vous délivrant ce beau et poétique message cité plus haut ! Évidemment, ce ne sont que deux des raisons parmi tant d'autres dont: Un CPU qui surchauffe (hébergeur en mousse généralement) une RAM pas assez élevé pour votre nombre de joueur (hébergeur en mousse généralement) ou bien un monde trop gros et trop peuplé par des tonnes d'entités anodines, que nous apprendrons par la suite à éradiquer violemment de votre beau et fragile espace de détente !

Problème A: Les chunks (visibles via /mem, /ram ou /lag)
Collègues fondateurs de SkyBlocks passez votre chemin, cette étape vous sera impossible à régler et vous fera plonger dans l'alcoolisme si vous vous y aventurez ! Pour les autres redéfinissons le chunk: C'est une zone de 16x16 prédéfinie à la création de la map ! Elle en est quadrillée ! Tout chunk chargé en plus augmente la taille de votre monde qui finit par être surchargé. Étant enfant je m'amusais à explorer en speed 10... je ne le referai plus. Solutions:
Trop de chunk: (+4000 environ) Déchargez les inactifs grâce à ClearLag (plugin à jour) et dans votre server.properties baissez la "view-distance" en dessous de 4 rien ne sera remarqué (Plus le chiffre est haut plus on en a qui se génèrent autour du joueur)
Chunk buggés: PtWeaks, Nolagg et optionnellement ClearLag permettent de repérer les chunks buggés et de les supprimer. Malheureusement certaines maps sont remplis de ces mauvaises herbes, il faut donc corriger la map. C'est une opération longue et je vous invite à vous rendre ailleurs pour vous renseigner...

Problème B: Les entités
C'est la star de ce soir, mesdames et messieurs acclamez le: Clearlag de nouveau, qui va nous permettre de mettre un délais (disons de 5) pour que toutes les 5mn toutes les entités soient supprimer dans un monde, mais ne vous inquiétez pas on peut faire des exceptions ! Exemple, je ne veux pas que sur mon serveur skyblock les gens perdent leurs élevages, ainsi je mets en exception: Cow, Chicken, Horse, Villager et Sheep ! D'autres aussi mais bon, on est pas non plus à tout citer ! Il permet aussi de supprimer manuellement les entités d'un monde (entité = mob + drops au sol)
Il y a aussi multiverse qui vous permet d'enlever les monstres/animaux du monde (en attribuant là aussi des exclus de la règle si besoin est)
Solution bourine pour stoper définitivement les lags (arrête la redstone et supprime toutes les entités sans exception) : /stoplag et /stoplag -c pour arrêter le freeze du serveur.

Problème C: Les plugins
Nolagg contient un .jar pouvant vous indiquer la consommation de chaque plugin. Malheureusement généralement ce sont les 3 les plus utiles qui reviennent: Essentials, WorldGuard et Multiverse. De gros bonhomme. Faites régulièrement le ménage dedans et chassez les mises à jour ! Les messages [WARN] et surtout [ERROR] sont à prendre en compte dans vos logs ! Si vous ne savez pas déchiffrer, aucun problème, cherchez le nom d'un plugin dans l'erreur, et si il apparait essayez de le désactiver/supprimer et de relancer ! Lors d'un petit lag ou d'une chute de TPS violente, notez l'heure afin de repérer plus facilement et rapidement la prétendue source du problème dans les logs !

Problème D: L'hébergeur
Rien de plus, afin de vous prendre plus de RAM / CPU si vous les voyez à 100% dans votre console / interface /lag /ram /mem ou /tps pensez à monétiser votre serveur via JSONAPI, qui fait lagger si vous êtes sous spigot (et oui, il n'est pas parfait mais ça reste entre nous ;) )


Echelle de Fuizziy:

+20 (ça arrive): Très très bien... Malheureusement si tu es là c'est que tu ne vois ça que durant les 3 premières secondes après le démarrage de ton serveur ou dans des cas exceptionnels
20/18: Pas d’inquiétude
18/15: Commence à stresser garçon
15/12: Argh, danger
12/09: On t'la faite à l'envers si on t'as promis un serveur sans lags quand t'as sorti la carte bleue
09/07: Ouai bon y a plus grand chose à faire
-07: Ta vie est foutue




Voilà, il se peut que vous soyez réticents à ces explications, que ma façon d’expliquer ne vous ai pas plu. Cependant j'ai passé du temps à ça et j'ai essayé d'être le plus complet possible avec les données connues et que j'ai pu emmagasiner, alors laissez un commentaire si ça vous a servi ou si vous avez apprécié

Oncle Fuizziy
 
  • J'aime
Reactions: _Aube_ et ptitcolas

Blenn412

Créateur de la série MiniMine Tuto
25 Décembre 2012
377
27
140
33
En gros, par exemple dans le spigot.yml, plus on rapproche les ticks de 0, plus ça lagg ou plus minimise les laggs ?