EndyStudio
Plugins

Analyseur de profils spark

Collez le lien de /spark profiler et obtenez le TPS et la durée des ticks de votre serveur, la liste de ce qu'il faut changer dans Java, les fichiers de config du serveur et les plugins, et le temps que chaque plugin prend sur chaque tick.

  • Gratuit
  • Sans compte
  • Fonctionne dans votre navigateur

Profil spark

Comment obtenir le lien

  1. Lancez /spark profiler start sur le serveur. spark est inclus dans Paper et Purpur depuis la 1.21 ; sur les autres serveurs, installez d'abord le plugin ou le mod spark.
  2. Laissez-le enregistrer au moins 5 minutes, avec des joueurs connectés.
  3. Lancez /spark profiler stop et collez ici le lien qu'il vous donne.

Le profil est téléchargé directement depuis spark.lucko.me dans votre navigateur. Il ne passe jamais par notre serveur.

Ce que vérifie l’analyseur

spark enregistre ce que fait le serveur plusieurs fois par seconde, et l’envoie en ligne avec les chiffres et les fichiers de config du serveur. L’analyseur lit tout cela et passe en revue quatre choses :

  • L’état du serveur. Le TPS et le MSPT des dernières minutes, le CPU, la mémoire, les joueurs et les entités chargées, et une barre par minute pour voir quand il a ralenti.
  • Java et la machine. La taille du heap, le garbage collector et s’il utilise les flags d’Aikar, les full GC, la mémoire restante après les collectes, les threads CPU, et si la machine manque de mémoire ou est occupée par autre chose.
  • Les réglages. view-distance et simulation-distance dans server.properties, les limites de spawn dans bukkit.yml, les entity activation ranges dans spigot.yml, et les options de Paper et de Purpur pour les explosions, la redstone, les collisions, les spawners, les hoppers, les porte-armures et les villageois. Chaque point indique quel fichier et quelle clé modifier.
  • Les plugins. Le temps que prend chaque plugin sur le thread principal, les plugins qui posent souvent problème (ClearLag, PlugMan, les stackers de mobs), et le chunk qui contient le plus d’entités, avec une commande /tp pour y aller.

Les points sont triés de ce qu’il faut corriger en premier jusqu’aux conseils facultatifs. Tant que le serveur suit, les changements de réglages apparaissent comme des conseils : ils libèrent du temps dont vous n’avez pas encore besoin.

Comment créer un profil spark

  1. Lancez /spark profiler start dans la console ou en jeu. Sur Paper et Purpur 1.21 et plus récents, spark est déjà intégré.
  2. Laissez-le enregistrer au moins 5 minutes à un moment normal, avec des joueurs connectés. Le profil d’un serveur vide ne montre qu’un serveur au repos.
  3. Lancez /spark profiler stop. spark envoie le profil en ligne et affiche un lien https://spark.lucko.me/….
  4. Collez le lien ci-dessus. L’analyse démarre toute seule.

Pour un lag qui arrive par pics plutôt qu’en continu, enregistrez uniquement les ticks lents : /spark profiler start --only-ticks-over 100 garde les ticks qui ont pris plus de 100 ms et ignore le reste.

TPS et MSPT

Le serveur fait tourner le monde en ticks, 20 par seconde, donc chaque tick dispose de 50 ms. Le MSPT (millisecondes par tick) est la durée réelle d’un tick. Tant qu’il reste sous 50, le serveur tient 20 TPS et a de la marge. Dès que les ticks durent plus longtemps, le TPS chute, et les mobs, la redstone et les cultures ralentissent pour tout le monde.

MSPT Ce que ça signifie
Moins de 30 ms Beaucoup de marge pour les moments chargés
30 – 45 ms Correct, mais avec peu de marge
45 – 50 ms À la limite : le moindre pic se voit
Plus de 50 ms Le serveur prend du retard et le TPS chute

L’analyseur regarde le 95e percentile, la durée sous laquelle sont restés 95 % des ticks. Une moyenne cache les ticks lents ; le 95e percentile, non.

Lire le temps par plugin

La liste des plugins additionne le temps passé dans le code de chaque plugin sur le thread principal et le divise par le nombre de ticks enregistrés : elle se lit donc en ms par tick, à comparer aux 50 ms dont dispose chaque tick. Un plugin qui prend 5 ms par tick utilise à lui seul un dixième du budget. Le temps qu’un plugin passe à appeler un autre plugin compte pour celui qui est appelé, comme dans le viewer de spark.

Ce qui reste après les plugins, c’est le jeu lui-même : entités, chunks, redstone et joueurs. Les points sur les réglages visent cette partie. Pour voir exactement quelle tâche d’un plugin prend le temps, ouvrez le profil dans le viewer de spark et passez à la vue Sources.

Les changements qui aident le plus en général

  • Baissez simulation-distance à 5 ou 6, et view-distance aux alentours de 8. La simulation distance détermine quelle partie du monde tourne autour de chaque joueur, donc elle pèse sur chaque tick.
  • Baissez les entity activation ranges dans spigot.yml, pour que les mobs éloignés des joueurs soient tickés moins souvent.
  • Utilisez les options de Paper : optimize-explosions, l’implémentation de redstone ALTERNATE_CURRENT, max-entity-collisions à 2 et un tick rate des spawners à 2.
  • Lancez Java avec les flags d’Aikar et un heap adapté au serveur. Le calculateur de RAM écrit les deux pour vous.
  • Prégénérez le monde avec un plugin comme Chunky, pour que les nouveaux chunks ne soient pas générés pendant que les gens jouent.

Changez une seule chose à la fois et enregistrez un nouveau profil ensuite. Vous saurez ainsi ce qui a aidé, et quoi annuler si une ferme arrête de fonctionner.

Votre profil et la confidentialité

L’analyseur fonctionne dans votre navigateur : le profil est téléchargé directement depuis spark.lucko.me et ne passe jamais par EndyStudio. Gardez en tête qu’un profil spark contient les fichiers de config de votre serveur (spark masque les mots de passe, les IP et les clés similaires), et que n’importe qui ayant le lien peut l’ouvrir.

Questions fréquentes

Comment créer un profil spark ?

Lancez /spark profiler start sur le serveur, laissez-le enregistrer au moins 5 minutes pendant que des joueurs sont connectés, puis lancez /spark profiler stop. spark envoie le résultat en ligne et vous donne un lien spark.lucko.me. Collez ce lien dans l'analyseur.

spark est-il inclus dans Paper ?

Oui. Paper, et les forks comme Purpur, intègrent spark depuis Minecraft 1.21, donc la commande /spark fonctionne sans rien installer. Sur Spigot, Fabric, Forge, NeoForge, Velocity ou BungeeCord, installez d'abord le plugin ou le mod spark.

Qu'est-ce qu'un bon MSPT ?

Chaque tick dispose de 50 ms. Sous 30 ms, il reste beaucoup de marge ; de 30 à 45 ms, ça va mais c'est juste ; et dès que les ticks dépassent régulièrement 50 ms, le serveur ne peut plus tenir 20 TPS et les joueurs ressentent du lag.

Mon profil est-il envoyé à EndyStudio ?

Non. Votre navigateur télécharge le profil directement depuis spark.lucko.me et l'analyse sur votre ordinateur. Rien ne passe par notre serveur et rien n'est stocké. Notez que n'importe qui ayant un lien spark peut l'ouvrir, y compris les fichiers de config de votre serveur.

Pourquoi l'analyseur n'affiche-t-il pas de détail par plugin ?

Le détail vient de l'arbre d'appels de spark, que seuls les profils de /spark profiler contiennent. Un rapport de santé (/spark health) ou un résumé du heap (/spark heapsummary) ne l'incluent pas.

L'analyseur dit que tout va bien, mais les joueurs laguent quand même. Pourquoi ?

Le lag ressenti par le joueur ne vient pas toujours du serveur. Si le TPS reste à 20 et que les ticks sont courts, regardez la connexion (ping, perte de paquets, le proxy) ou les FPS du client lui-même. Si le lag arrive par à-coups, enregistrez uniquement les ticks lents avec /spark profiler start --only-ticks-over 100.