Serveur minecraft

Garder le contact avec "Vous ne pouvez pas suivre!" – Guide surchargé sur le serveur Java Vanilla Tick-par-seconde-Bust-Busting -or – Resoudre les problemes d’un serveur MineCraft

Le 23 juillet 2019 - 21 minutes de lecture

Garder le contact avec "Vous ne pouvez pas suivre!" – Guide surchargé sur les serveurs Java Vanilla Tick-par-seconde-Décalage

-ou-

Comment j'ai appris à cesser de m'inquiéter et à aimer / déboguer


Nous y avons tous été. Le jeu est à la traîne et malgré tous nos efforts, la raison semble rester une énigme. Eh bien, essayons de creuser jusqu'au fond.

Clause de non-responsabilité: ce guide n'est pas exhaustif. Ceci est juste une compilation de tout ce que j'ai appris en essayant de ralentir le serveur que je dirige. Personnellement, je gère un serveur vanille Minecraft 1.12.2 sur un ordinateur Windows 7×64 avec Java 8.161. Je vais tout de suite commencer par dire: ce guide ignore Spigot. Ceci est un guide de vanille. Spigot peut grandement aider à la performance, mais il modifie également fondamentalement le fonctionnement de certaines choses (comme les larves), de sorte que ce guide est destiné aux personnes qui ne veulent pas du tout modifier. En théorie, toutes ces informations peuvent également s'appliquer aux serveurs Spigot, mais elles ont été testées pour la vanille et je ne sais pas si elles s'appliquent également aux serveurs Spigot.

Il existe trois sources principales différentes de "décalage".

Si le monde est un monde à un seul joueur, il n'y a pas de décalage réseau, mais Minecraft exécute des mondes à un joueur en tant que serveur interne sur la machine sur laquelle vous jouez. La distinction serveur / client reste donc identique, même dans les mondes à un joueur. .

Pour simplifier excessivement le décalage du réseau et du client:

  • Le décalage du réseau ressemble à une extinction fréquente, un indicateur de ping rouge si vous appuyez sur la touche de tabulation et une bande élastique dans le jeu. Les tests de vitesse en ligne peuvent parfois aider à diagnostiquer les problèmes de connexion. Un signal wifi faible, une accélération NAT et une charge élevée sur les routeurs peuvent entraîner des problèmes de déconnexion ou de déconnexion du réseau.

  • Le décalage client ressemble à un problème de nombre d'images par seconde. FPS peut être vu dans le jeu si vous appuyez sur F3 – côté gauche, deuxième rangée du haut. Le lag client peut être aidé en modifiant les paramètres vidéo, en installant Optifine, en s'assurant que les pilotes de la carte vidéo sont à jour, en s'assurant que la version de Java que vous exécutez correspond à la version de Java du serveur, et en veillant à ce qu'il y ait suffisamment de ressources disponibles sur le serveur. ordinateur client pour exécuter le jeu (par exemple, fermez d’autres programmes et configurez les antivirus en mode jeu s’ils en disposent). Shift + F3 dans le jeu affiche un graphique à secteurs qui peut vous aider à identifier les sources de décalage du client dans le jeu. Le rendu de nombreuses entités régulières, entités de mosaïque ou mises à jour de la lumière peut entraîner un décalage du client (les événements existants / en cours contribuent également au décalage du serveur).

Mais ce guide se concentre sur le troisième type de décalage: le décalage de serveur. Le décalage du serveur se manifeste sous la forme d'un décalage à la seconde près.

Le jeu veut fonctionner à 20 ticks par seconde. S'il est incapable de terminer toutes les tâches qu'il veut faire en 1/20 de seconde, le tickrate commence à baisser. Lorsque le serveur s'exécute plus de 2000 ms après, un message apparaît dans la console du serveur: "CONSOLE: thread / WARN].

: Ne peut pas suivre! L'heure du système a-t-elle changé ou le serveur est-il surchargé? Fonctionnement [####]ms derrière, sautant [##] tick (s) ". Si un tick prend une minute, le jeu plante avec une erreur fatale du chien de garde des serveurs. Ce n’est pas une bonne idée d’ignorer le décalage du serveur une fois que les signes d’avertissement apparaissent. Il est assez facile de finir avec perte de tiques, partiellement due à un bogue: https://bugs.mojang.com/browse/MC-121196

Dans le jeu, vos joueurs remarqueront peut-être que la consommation de nourriture / de potions prend un peu plus de temps que prévu, le soleil et la lune se levant brusquement dans le ciel, et parfois, après avoir brisé un bloc, il semble clignoter un instant avant de finalement tomber en tant qu'entité. . Les cycles complets jour / nuit prennent plus de temps que 20 minutes IRL. Et chaque joueur sur le serveur est affecté de la même manière, quelle que soit la qualité de leur connexion ou celle des machines clientes.

Il y a plusieurs facteurs à considérer ici:

  • Matériel

  • Configuration du serveur

  • Basé sur le jeu


MATÉRIEL

Pour obtenir des recommandations sur les spécifications du système de serveur, consultez la page suivante: https://minecraft.gamepedia.com/Server/Requirements/Dedicated.

Les recommandations techniques de Mojang pour les clients de Minecraft sont disponibles ici: https://help.mojang.com/customer/fr/portal/articles/325948-minecraft-system-requirements

Trois goulots d'étranglement matériels différents peuvent potentiellement causer un décalage du serveur.

  • Puissance de calcul

  • Mémoire (RAM)

  • Vitesse du disque dur (ROM)

Je recommande d'exécuter un serveur dorsal qui vous permet de surveiller les ressources du système pendant que le serveur est en cours d'exécution. Personnellement, j'utilise MCMyAdmin; c'est gratuit et merveilleux.

Minecraft n'utilisera jamais qu'un seul cœur de processeur, même si votre ordinateur est doté de plusieurs cœurs. Le traitement graphique n’est nécessaire que si la machine en question exécute également un client (c’est-à-dire un seul joueur).

Pour optimiser les performances du serveur, vous devez vous assurer que le processeur ne subit pas trop de stress, ce qui peut être quelque peu allégé par la gestion d’autres processus en cours d’exécution sur la machine. Si vous avez un antivirus avec un mode de jeu, activez ce mode. Si vous utilisez Windows 7, vous pouvez désactiver les animations Aero ou GUI (Panneau de configuration> Système> Paramètres système avancés> Avancés> Performances> Paramètres> choisissez "Performances optimales"). Des processus tels que Apple Software Update et Windows Update peuvent avoir un impact considérable sur les performances, en particulier si les mises à jour installées attendent que le système redémarre pour terminer l'installation.

Il est très courant d’allouer plus de mémoire à un serveur qui a du mal à suivre, mais sachez qu'en allouant plus de mémoire, vous agrandissez également le tas, ce qui signifie que le serveur doit travailler plus fort (avec son CPU) pour effectuer son processus de récupération de place. C'est un peu un compromis. Si vous avez un excellent processeur et que vous implémentez G1GC (voir la section «Configuration du serveur» ci-dessous), vous pouvez probablement allouer en toute sécurité 6 Go ou plus de mémoire si votre ordinateur en dispose. Sachez que si vous utilisez un système 32 bits, la quantité maximale de mémoire que vous pourrez allouer à Minecraft est de 1 Go.

Le jeu enregistre automatiquement toutes les 45 secondes, ce qui peut entraîner un goulot d'étranglement des E / S sur le disque dur si le disque est soumis à une charge importante. Vous voudrez vous assurer qu'aucun processus en cours d'exécution sur la machine n'analyse ou indexe les fichiers du serveur Minecraft en temps réel (comme un service de sauvegarde, un antivirus ou l'indexation de la recherche Windows). Vous devrez donc ajouter des exceptions à ces programmes pour les dossiers qui contiennent le monde Minecraft. Je recommanderais d'exécuter un serveur Minecraft sur un lecteur distinct de celui utilisé sur la machine. C'est encore mieux si vous pouvez faire de ce lecteur un disque SSD ou RAMDISK. Si (et UNIQUEMENT si) vous utilisez un disque dur (PAS un SSD), vous souhaiterez peut-être défragmenter périodiquement le lecteur pour améliorer les performances d'E / S du disque. Ne défragmentez pas les disques SSD.


CONFIGURATION DU SERVEUR

Avant même de lancer votre serveur, vous aurez besoin du serveur JRE, qui n’est pas livré avec une installation normale de java ou du fichier jar du serveur. Allez ici: http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html et assurez-vous que votre serveur sait utiliser ce fichier java.exe pour exécuter le serveur minecraft. (Avec MCMyAdmin, cela est simple: le fichier MCMyAdmin.conf a une option qui indique au serveur le chemin d’accès exact à la version de Java à utiliser).

Ensuite, vous voudrez penser aux options de démarrage et aux arguments Java. Il existe de nombreuses informations confuses, avec d'anciens arguments obsolètes de Java 6 et 7. Je recommande de rechercher tous les arguments que vous souhaitez utiliser avant de les implémenter, afin de vous assurer qu'ils existent toujours dans la version de Java que vous utilisez. Pour Java 8, je recommande les arguments suivants:

        -serveur

Cela garantit que le serveur utilise la machine virtuelle du serveur. Cela aide la performance.

        -Xms512M -Xmx2048M

Celles-ci allouent au minimum la quantité de mémoire que le serveur peut utiliser (Xms) à un demi-Go, et à la quantité maximale de mémoire que le serveur peut utiliser (Xmx) à 2 Go. Je ne recommanderais pas de régler ces deux nombres pour qu'ils soient égaux. Un Xms plus élevé peut aider à réduire le retard de démarrage, si cela pose un problème, mais si le retard de démarrage n’est pas un gros problème, vous pouvez probablement laisser Xms assez bas. N'hésitez pas à ajuster ces chiffres en fonction des besoins et des capacités de votre serveur.

        -XX: + UseG1GC

Le ramasse-miettes est alors défini comme une collecte ordures-tout, conçue pour minimiser les retards, même avec des tailles de tas importantes. C'est le ramasse-miettes le plus recommandé pour les serveurs Minecraft, en particulier ceux auxquels beaucoup de RAM est allouée.

        nogui

La console d'interface graphique du serveur qui apparaît lorsque vous démarrez un serveur provoque normalement BEAUCOUP de contraintes sur les ressources du serveur. L'ajout de "nogui" (sans les guillemets) à la fin de vos arguments de démarrage fera en sorte que le serveur démarre sans cette interface de console lente. (Si vous utilisez MCMyAdmin, nogui est configuré de manière légèrement différente et vous pourrez toujours accéder à la console du serveur via l'interface de navigateur Web du serveur principal).

Une autre option de configuration susceptible de réduire le décalage consiste à réduire la distance de rendu du serveur. Je ne recommande PAS de réduire la distance de rendu en dessous de 10 morceaux, à cause de ce bogue: https://bugs.mojang.com/browse/MC-2536. La reproduction en masse va s'arrêter si la distance de rendu est inférieure à 10. Si vous ne vous souciez pas de la reproduction en masse, le minimum que je recommanderais est 6, à cause des problèmes potentiels de rendu du ciel si vous allez plus bas que cela.


CAUSES DANS LE JEU DU GAL TPS

Dans le jeu, de nombreuses choses peuvent contribuer à la charge du serveur. Si vous vous laissez aller à une hyperphagie, voici quelques points à garder à l'esprit:

  • La répétition des blocs de commande configurés pour stocker leurs paquets de sortie les plus récents entraîne un retard plus important que ceux qui ne sont pas configurés pour stocker leur sortie la plus récente.

  • Si vous avez plus de 64 mises à jour par bloc dans un seul bloc en un seul clic, le jeu envoie le bloc entier à mettre à jour. Ne mettez pas beaucoup d'horloges de remplissage dans le même morceau.

  • gameLoopFunction exécute chaque tick et peut être éprouvant, même si vous ne l'utilisez que pour une fonction de tête de mob. Je recommande de ne pas utiliser / gamerule gameLoopFunction du tout pour des choses comme ça, mais plutôt de créer une horloge simple dans des fragments spawn comme ceci: https://www.youtube.com/watch?v=91MUm9qgRXQ et d'exécuter le fichier de fonction de cette façon (exécutez la fonction du bloc de commande que le didacticiel a créée pour créer une particule d’explosion). (Je sais pertinemment que cette solution de contournement peut entraîner des problèmes avec Spigot, soyez prévenu).

  • Les mises à jour d'éclairage sont incroyablement lentes. Essayez de vous assurer que vos circuits Redstone avec des pistons, des torches, des répéteurs et des comparateurs sont bien éclairés afin d'éviter que ces mises à jour d'éclairage ne se produisent dans vos circuits. Ne pas avoir beaucoup de lampes clignotantes inutiles, non plus.

  • Un grand nombre de mises à jour fluides peuvent être lentes lorsqu'elles se produisent.

  • Les larves chercheront constamment des entités à aspirer, à moins qu'un conteneur ne soit placé au-dessus de celui-ci. Les blocs solides réguliers n'arrêteront PAS cette recherche. Je recommande d'utiliser DROPPERS pour couvrir toutes les chaînes de trémies longues, afin d'éviter que cette méthode de recherche d'objet supplémentaire n'exécute chaque tick pour chaque trémie. Les fours ne sont plus recommandés car ils sont eux-mêmes cochés, alors que les compte-gouttes ne le sont pas. Voir: https://www.youtube.com/watch?v=8s7S-xFVZcg Notez également que les entités d'éléments flottant sur le sol vérifient (une heure supplémentaire!) Chaque trémie située dans la même sous-parcelle (zone 16x16x16). voyez si elle doit être aspirée, même si la trémie ne peut pas la supporter. De cette manière, les entités sur le sol et les trémies ensemble peuvent causer plus de retard que chacune d'elles. Il est recommandé de s’assurer qu’il reste peu d’éléments d’élément!

  • Les entités, en particulier celles qui ont une intelligence artificielle, sont probablement la chose la plus à la traîne du jeu et la cause la plus commune de la plupart des gens qui subissent un retard important du serveur. Pour voir combien d'entités il y a dans une zone, appuyez sur F3 dans le jeu et regardez la quatrième ligne, à gauche: "E: # / #". Le premier nombre correspond au nombre d'entités dans votre champ de vision, ce qui inclut la vision à travers les murs. Le deuxième nombre correspond au nombre total d’entités chargées autour de vous. Les entités incluent: mobs, minecarts, bateaux, cadres d’objet, joueurs, objets, xp orbes, etc. – en gros tout ce qui n’est pas une entité bloc ou mosaïque. Un grand nombre d'entités entraînera un décalage dans le jeu.

  • Si vous savez que vous allez rencontrer un grand nombre de personnes dans les exploitations agricoles, en se heurtant constamment les unes aux autres (en faisant cette petite danse agitée), vous pouvez supprimer la capacité des foules spécifiques à entrer en collision en mettant en place une option d'équipe de tableau de bord pour: ces entités. Je recommande de regarder la vidéo de xisuma à ce sujet ici: https://youtu.be/IR-sR1HVSYA?t=17m30s. Notez que si vous activez ce correctif pour certains mobs, ceux-ci ne se crèveront plus eux-mêmes à mort via maxEntityCramming s'ils deviennent trop nombreux, appliquez donc ce "correctif" universellement à certains types de mob (comme les poulets ou les villageois, par exemple). pourrait causer des problèmes de retard beaucoup plus importants si les foules se reproduisent hors de contrôle. Je recommande d'appliquer ce correctif uniquement localement aux batteries dont vous avez confirmé qu'elles ne se reproduiraient pas de manière incontrôlable.

  • Les entités avec des UUID en double entraîneront un retard important du serveur. Celles-ci sont le plus souvent causées par un bogue https://bugs.mojang.com/browse/MC-119971 et ne sont visibles que dans la console du serveur. Ils apparaissent dans la console du serveur sous la forme (par exemple): "Conserver l'entité Minecraft: villageois qui existe déjà avec l'UUID 95bbe5ba-ff0e-46bc-a22f-a040dfd7572c" et "extraire le paquet addpacket pour l'entité supprimée" dans la console. La seule façon de résoudre ce problème consiste à utiliser la commande / kill ciblée sur l'UUID de l'avertissement (ainsi, pour l'exemple cité, il s'agirait de "/ kill 95bbe5ba-ff0e-46bc-a22f-a040dfd7572c" sans les guillemets), et répétez la commande jusqu'à ce que le jeu vous indique que la cible est introuvable.

  • Peut-être au début contre-intuitivement, le fait d'être dans une zone bien conditionnée entraîne l'utilisation d'un plus grand nombre de ressources par algorithme pour l'algorithme de reproduction de la foule, par rapport à une zone moins bien conditionnée. Si le nombre maximum de mob n'est pas atteint, l'algorithme de génération de mob continue de tenter de générer des foules dans chaque bloc, car il échoue encore et encore. Cependant, gardez à l'esprit que les ressources utilisées par ce processus sont nettement inférieures à celles que les entités mob elles-mêmes utiliseraient si vous étiez à la limite de la mob.

  • Le fait de créer un nouveau terrain est extrêmement stressant pour le serveur, surtout si le joueur se déplace rapidement (comme voler avec des élytres). Certains administrateurs préfèrent pré-générer une grande quantité de terrain avant d'ouvrir le serveur aux membres ou lorsque tous les membres sont hors ligne, afin de réduire le stress sur le serveur lorsque des personnes essaient de jouer.

  • Il y a un bogue concernant les fichiers dat dans le dossier "world / data": https://bugs.mojang.com/browse/MC-33134. Ces fichiers sont ceux qui stockent les données d'élément de carte et les données de structure. Les fichiers de structure contiennent des structures NBT massives avec des données sur chaque élément de structure de toutes les structures naturelles du monde entier, ce qui est extrêmement inefficace en termes d'utilisation de la mémoire. Ces fichiers, en grandes quantités et tailles volumineuses, peuvent provoquer eux-mêmes un certain retard, car ils sont chargés en mémoire dans leur intégralité lorsqu’ils sont appelés. La taille des fichiers de structure de Minecraft montera en flèche au cours de la vie normale du monde. Si vous supprimez ces fichiers (comme le recommandent certaines personnes), les structures déjà générées dans votre monde (telles que les cabanes de sorcières, les monuments océaniques et les forteresses inférieures, par exemple) perdent leurs propriétés spéciales (et ne généreront donc plus les propriétés spéciales). mobs comme ils le devraient). Si vous supprimez des fichiers de carte, les cartes en jeu seront brisées si elles sont utilisées par vos joueurs. Je ne recommande sérieusement PAS de supprimer ces fichiers de données, même ceux comme Mineshaft.dat, à moins que vous n'ayez absolument à le faire. Cela pourrait briser les fonctionnalités futures de vos structures existantes, même si cela ne casse rien aujourd'hui. Si vos fichiers de structure sont volumineux et / ou que votre monde contient de nombreuses cartes, je vous recommande d'allouer plus de mémoire au serveur pour compenser si vous en êtes capable.


ARGH IL YA ENCORE UN SERVEUR SERVEUR QUE FAIRE

Enfin, nous nous sommes assurés que tout fonctionne aussi bien que possible, mais nous sommes toujours confrontés à un retard énigmatique dans le jeu. Permettez-moi maintenant de vous présenter officiellement votre nouveau meilleur ami: la commande / debug. Vous n'avez pas besoin de carpetmod pour / tick santé, car il existe de puissantes fonctionnalités puissantes disponibles dans vanilla! / debug est le secret le mieux gardé de ce jeu, à mon humble avis.

Vous pouvez démarrer une session de débogage en exécutant "/ debug start" (sans les guillemets), puis arrêter une session de débogage en exécutant "/ debug stop" (sans les guillemets).

Si vous regardez la console du serveur lorsqu'elle est en cours d'exécution, vous pourrez voir les messages si quelque chose prend trop de temps: "[CONSOLE: thread/WARN]: Quelque chose prend trop de temps! 'root' a aprox ### ms ". Lorsque vous arrêtez une session de débogage, il vous dira combien de secondes elle a été exécutée et combien de ticks se sont produits pendant cette période. En prenant le nombre de ticks et en le divisant par le nombre de secondes, vous pouvez calculer rapidement votre tickrate.

Je recommande d'exécuter des sessions de débogage pendant au moins une minute (pour être sûr qu'il y ait au moins une sauvegarde automatique). L'exécution d'une session de débogage peut elle-même causer un certain retard. Ne la laissez donc pas toujours active. Vous pouvez vous déplacer, en chargeant différentes dimensions ou les bases de différentes personnes, pour avoir une idée des performances du TPS dans chaque domaine, car il peut y avoir quelque chose dans un emplacement particulier qui cause un décalage du serveur.

Le véritable pouvoir de / debug vient du journal du profileur qu'il crée. Chaque fois que / debug est exécuté, il crée un nouveau fichier journal de profileur. Pour pouvoir consulter le journal, vous devez accéder aux fichiers du serveur après avoir exécuté une session de débogage. Les journaux du profileur de débogage sont enregistrés dans un dossier appelé "débogage" à la racine du dossier contenant votre sauvegarde Minecraft (le dossier "débogage" se trouve au même endroit que le dossier des rapports d’incidents, le fichier de liste blanche, le dossier "monde", le dossier mods, le dossier plugins, etc.). Les journaux du profileur de débogage sont formatés avec soin, ouvrez-les dans un programme tel que Notepad ++ qui conserve le formatage (le Bloc-notes ne le coupera pas). Chaque journal détaille admirablement le pourcentage de chaque tick occupé par différentes parties du jeu.

Du commentaire de / u / mynameisperl: https://www.reddit.com/r/Minecraft/comments/3xea29/need_help_with_debug_command/cy3y7zl/?utm_content=permalink&utm_medium=front&utm_source=reddit

Chaque ligne indique la proportion du temps total consacré à une activité de jeu particulière. Le premier chiffre entre crochets est la profondeur de l’arbre affiché à cet endroit, en commençant par [00] au plus haut niveau. Toutes les lignes avec [00] sont à la même profondeur et le pourcentage de leurs activités s’élèvera à 100% – c’est le premier pourcentage de la rangée après le «-». Sous chaque [00] sous-arbre, les lignes commençant [01] sont également au même niveau les uns que les autres et leurs pourcentages totalisent 100% du temps de leurs parents. Le deuxième pourcentage, après le '/', correspond au temps pris dans l’activité par rapport au profil complet.

Je ne peux pas comprendre ce que tout est complètement dans ce journal, et je n'ai pas été en mesure de trouver un guide complet de ce que tout est, mais certaines choses sont super évidentes, comme les entités régulières avec IA, les entités de tuiles à cocher (des choses comme des trémies , fours, etc. – appelés blockEntities dans le journal, ventilés par type pour montrer l’impact sur les performances), commandFunction (qui inclut l'impact gameLoopFunction), etc. Vous pouvez l’utiliser pour vous aider à identifier les éléments qui grignotent le plus les ressources du serveur.


J'espère que ce guide aide les gens. Je suis désolé, je ne peux pas être disponible pour aider les gens à résoudre leurs problèmes individuels, alors s'il vous plaît, ne me priez pas de vous aider dans les commentaires relatifs à vos problèmes individuels. Ce guide est conçu comme un endroit où vous pouvez commencer à vous aider.

Si j'ai oublié quelque chose ou si je me suis trompé, faites-le moi savoir et / ou corrigez-moi dans les commentaires!

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.