spark est le profiler pour serveurs Minecraft. Quand le serveur rame, spark te dit en quelques secondes si le tick rate en souffre, quels plugins ou quelles fermes bouffent du temps, et si le CPU ou la mémoire est à la limite. Ce guide te montre les trois commandes dont tu as vraiment besoin et comment lire les chiffres. Les captures d'écran proviennent d'un serveur de test avec Paper 1.21.4.
Installation
spark fonctionne comme plugin sur Paper et Spigot, et comme mod sur Fabric, NeoForge et Forge. Dans le panel, tu le trouves sous Plugins → Browser. Aucune configuration n'est nécessaire. Les commandes doivent appartenir au groupe de modération ; le nœud correspondant s'appelle spark. Pour savoir comment l'attribuer, consulte LuckPerms : configurer les permissions.
Premier coup d'œil : TPS et durée des ticks
/spark tps affiche trois lignes :

- TPS (ticks par seconde) sur les 5 dernières secondes, 10 secondes, 1, 5 et 15 minutes. 20,0 est le maximum. Vers 19, les joueurs ne remarquent encore rien, en dessous de 15 les animaux bougent de façon saccadée, en dessous de 10 le serveur devient injouable.
- Durée des ticks en minimum, médiane, 95e percentile et maximum, en millisecondes. Un tick peut durer 50 ms pour maintenir 20 TPS. Sur l'image, la médiane est de 2,4 ms ; le serveur a donc beaucoup de marge. Le 95e percentile est déterminant : s'il est proche de 50 ms, il y a des saccades, même si la moyenne semble bonne.
- Utilisation CPU, séparée entre système (toute la machine) et processus (uniquement ton serveur). Sur un serveur loué, c'est la valeur du processus qui compte.
/spark healthreport regroupe les mêmes valeurs avec la mémoire et le disque dans un seul rapport.
Le profiler : qui bouffe le temps ?
Quand les TPS s'effondrent, tu lances le profiler :
/spark profiler start
spark confirme le démarrage et continue à tourner en arrière-plan. Laisse-le tourner au moins une minute pendant que le problème se produit, puis :
/spark profiler stop

À l'arrêt, spark envoie le rapport sur spark.lucko.me et affiche un lien. Le rapport ne contient ni noms de joueurs, ni adresses IP, ni messages de chat, mais des arbres d'appels du processus Java. /spark profiler open l'ouvre déjà pendant l'exécution, /spark profiler cancel l'annule sans envoi.
Dans le rapport, tu déplies l'arbre depuis le haut. Ce que tu trouves typiquement :
- Ticks d'entités d'un type précis : une ferme avec des centaines d'animaux ou d'objets. Réduis la ferme ou calme-la avec
entity-activation-rangedanspaper-world-defaults.yml. - Un plugin dans un event listener : mets le plugin à jour, vérifie ou remplace la configuration.
- Chargement de chunks dû à des joueurs qui volent vite : réduis la distance de vue ou pré-génère le monde avec Chunky.
- Horloges à redstone : un circuit qui ne s'arrête jamais. Demande au joueur de le désactiver.
Garbage collection et mémoire
/spark gc montre la fréquence et la durée des pauses du ramasse-miettes Java. De nombreuses pauses longues signifient trop peu de RAM ou une fuite mémoire dans un plugin. /spark heapsummary liste les types d'objets qui occupent la mémoire. Avant de réserver plus de RAM, un coup d'œil ici en vaut la peine : souvent, une mise à jour de plugin résout le problème.
Erreurs typiques
- TPS à 20, mais lag quand même. Le problème se situe côté client ou réseau.
/spark pingaffiche la latence par joueur. - Lien du profiler oublié.
/spark profilersans argument affiche le statut ; après l'arrêt, le lien apparaît aussi dans la console du serveur. - Chiffres sans comparaison. Une valeur de TPS seule ne dit pas grand-chose. Mesure une fois avec un serveur vide comme référence.
FAQ
À partir de quelle valeur de TPS les joueurs remarquent-ils quelque chose ?
Jusqu'à environ 19 TPS, rien ne se remarque. En dessous de 15, les animaux et les projectiles bougent de façon saccadée, en dessous de 10 le serveur devient injouable. Fais moins attention à la moyenne qu'au 95e percentile de la durée des ticks : s'il est proche de 50 ms, il y a des saccades, même si la moyenne des TPS semble bonne.
Un rapport spark contient-il des données personnelles de mes joueurs ?
Non. Le rapport se compose d'arbres d'appels du processus Java et ne contient ni noms de joueurs, ni adresses IP, ni messages de chat. Si tu ne veux quand même rien envoyer, annule l'exécution avec /spark profiler cancel ou lis-le directement en jeu avec /spark profiler open.
Combien de temps le profiler doit-il tourner ?
Au moins une minute, pendant que le problème se produit réellement. Une exécution sur un serveur calme montre seulement que tout va bien. En cas de saccades sporadiques, laisse-le tourner plus longtemps et arrête-le juste après un décrochage.
Plus de RAM aide-t-il contre le lag ?
Seulement si la garbage collection en est la cause. /spark gc affiche la fréquence et la durée des pauses Java, /spark heapsummary les types d'objets qui occupent la mémoire. Souvent, c'est un seul plugin qui est en cause, et une mise à jour résout le problème plus économiquement que plus de RAM.
Les TPS sont à 20 et ça rame quand même — que faire ?
Alors ce n'est pas le tick du serveur qui est en cause, mais le client ou le réseau. /spark ping affiche la latence par joueur. Si cela ne concerne que certains joueurs, leur connexion en est la cause ; si cela concerne tout le monde, vérifie la distance de vue et le framerate côté client.
Guides complémentaires
Générer un monde à l'avance évite au serveur de charger les chunks : Chunky : pré-générer le monde. La façon dont le panel signale des TPS durablement bas est décrite dans Lag du serveur Minecraft : TPS et Watchdog.
Sources
- Documentation spark : https://spark.lucko.me/docs/
- Commandes : https://spark.lucko.me/docs/Command-Usage
- Lire les rapports du profiler : https://spark.lucko.me/docs/guides/Finding-lag-spikes