Aller au contenu principal

Optimiser un serveur Minecraft avec Spark

Profile le lag avec Spark. Depuis Paper 1.21 il est intégré. Démarre le profiler pendant le lag, puis lis TPS, MSPT et l'onglet World.

Skin de l’auteur Tomáš NavrátilTomáš Navrátil

Spark montre où le serveur bloque dans un tick. Depuis Paper 1.21, Spark fait partie du serveur. Ne mets pas de jar séparé dans plugins/. Sur Fabric, Forge et NeoForge, télécharge-le, dépose-le dans mods/, clique sur Redémarrer, puis utilise les mêmes commandes console.

Profile seulement quand le serveur a vraiment du lag. Un serveur vide a l’air calme. Tu ne verras pas les causes de blocage depuis ça.

L’interface du viewer Spark reste en anglais. Les libellés ci-dessous correspondent à ce viewer anglais.

Utiliser Spark (aperçu rapide)

  1. Ouvre l’onglet Console.
  2. Sur Paper 1.21+, tape spark. Ne cherche pas spark.jar dans plugins/.
  3. Quand le lag frappe, lance spark profiler start --timeout 30.
  4. Ouvre le lien https://spark.lucko.me/....
  5. Vérifie d’abord l’onglet World pour les comptes d’entités.
  6. Puis lis TPS, MSPT, CPU (process) et l’arbre Server thread.
  7. Sur Fabric, Forge et NeoForge, télécharge le jar depuis le site Spark ou Modrinth, mets-le dans mods/, puis Redémarrer.

Le chemin officiel Paper est dans la doc Paper.

1. Vérifie Spark dans Console

Le serveur doit tourner. Ouvre Console. Tape les commandes sans slash en tête.

Tape plugins. Server Plugins (0) veut dire qu’il n’y a pas de jar dans plugins/. Spark marche quand même : depuis Paper 1.21 il est intégré. Tu n’as pas besoin d’un spark.jar séparé. Deux Spark se battent pour les commandes.

Onglet Plugins sans jar Spark séparé

Tape spark et spark help. Tu verras la version et la liste des commandes. L’aide s’affiche avec un slash (/spark tps). Ne mets pas de slash dans Console.

Aide spark dans Console

Statut rapide sans rapport :

spark tps

2. Démarre le profiler pendant le lag

La doc Paper montre /spark profiler start --timeout 600. C’est 10 minutes. Pour un premier échantillon, 30-60 secondes suffisent, mais seulement pendant que le lag est là.

spark profiler start --timeout 30

Console dit que le profiler tourne en arrière-plan et finira après 30 secondes. Arrête plus tôt avec spark profiler stop.

Console spark profiler start

3. Ouvre le rapport

Quand le temps est écoulé, Console affiche un lien du type https://spark.lucko.me/.... Ouvre-le dans un navigateur. Le rapport expire, donc garde le lien seulement pendant ton analyse.

Lien rapport spark dans Console

4. Les comptes d’entités d’abord

Dans le rapport, clique sur l’icône i en haut et ouvre l’onglet World. Tu verras combien d’entités le serveur tient et dans quel monde. C’est le contrôle le plus rapide pour les mobs, les items au sol, ou une ferme surchargée.

Cherche un monde ou un type d’entité où les comptes montent à des centaines ou des milliers. À droite tu vois les régions et chunks avec les comptes les plus hauts. Un chunk fait 16×16 blocs ; la coordonnée est le numéro de chunk × 16.

Onglet World du viewer Spark avec comptes d'entités

5. TPS, MSPT, CPU et mémoire

Dans l’en-tête du rapport, lis les chiffres dans cet ordre.

1. TPS. Un serveur sain tient 20. En dessous d’environ 18, les joueurs sentent le lag.

2. MSPT. Un tick fait 50 ms. Le MSPT médian doit rester sous 50 ms. Un médian haut veut dire que le tick est surchargé, même si le TPS moyen tient brièvement 20.

3. CPU (process). Charge du processus Minecraft. CPU (system) est toute la machine. System haut et process bas veut dire que le jeu ne mange pas le tick ; c’est autre chose.

4. Memory (process). Mémoire du processus. Seule, elle ne prouve pas le lag.

5. Server thread. Racine de l’arbre. Ici tu vois ce qui mange le tick : entités, chunks, plugins.

En-tête viewer Spark avec TPS et MSPT

6. Arbre Server thread

Déplie la branche Server thread. Cherche les branches avec un pourcentage élevé : entités, chargement de chunks, un plugin précis.

Sur un serveur vide, presque tout est en attente (recordTaskExecutionTimeWhileWaiting), et processPacketsAndTick est une fraction de pourcent. Le serveur est calme. Sur un serveur qui a du lag, processPacketsAndTick est épais, avec des mangeurs concrets en dessous.

Arbre Server thread du viewer Spark

7. Liste des méthodes (Flat)

Passe à la vue Flat. La liste trie les méthodes qui prennent le plus de temps. Si un nom de plugin revient en haut, désactive-le d’abord et profile à nouveau.

Vue Flat du viewer Spark

8. Que faire du résultat

Les entités dominent l’arbre ou l’onglet World. Coupe les mobs et les items au sol, baisse view-distance, et limite le monde avec une limite du monde. Ne génère pas de nouveaux chunks pendant le jeu. Pré-génère avec Chunky.

Un plugin domine l’arbre. Désactive-le et profile à nouveau. Si le lag disparaît, cherche une version plus récente ou un remplacement. Ne collectionne pas les plugins « au cas où ».

La mémoire monte en flèche et reste pleine. Le serveur n’arrive pas à nettoyer. Monte la RAM du forfait ou réduis monde et plugins. Spark ne donne pas de gigaoctets exacts. Il te dit que le problème est la mémoire.

CPU (system) haut, process bas. Autre chose tourne sur la machine à côté de Minecraft. Un nouveau plugin ne corrigera pas ça.

Après chaque changement, lance un nouveau profil sous une charge similaire. Compare le MSPT médian, pas seulement le TPS.

9. Fabric, Forge et NeoForge

Sur Fabric, Forge et NeoForge, Spark n’est pas intégré. Télécharge le jar Fabric / Forge / NeoForge depuis spark.lucko.me/download ou Modrinth. Le site Spark indique aussi que Paper 1.21+ n’a pas besoin de plugin séparé.

Page de téléchargement officielle Spark

Sur Modrinth, ouvre Versions et filtre par Fabric ou Forge.

Versions Spark sur Modrinth

Mets le fichier dans mods/. Redémarre le serveur. Les commandes console sont les mêmes : spark, spark tps, spark profiler start --timeout 30. Tu ne crées pas de nouveau serveur via Spark.

Problèmes fréquents

La commande spark n’existe pas

Sur Paper 1.21+, tape spark sans slash et sans spark.jar. Sur Paper plus ancien, Spigot, Fabric ou Forge, le jar manque dans plugins/ ou mods/, ou il n’y a pas eu de redémarrage après l’import.

Deux Spark à la fois

Tu as déposé un jar séparé dans plugins/, et Paper a déjà Spark. Supprime le spark.jar en trop et redémarre. Sinon les commandes se dupliquent et les rapports sont inutiles.

Le rapport a l’air bon, mais les joueurs ont encore du lag

Tu as profilé un serveur vide. Recommence avec le même nombre de joueurs et la même activité que pendant le lag.

Le profiler tourne trop longtemps

--timeout 600 fait 10 minutes. Pour un premier échantillon, utilise 30-60 s, ou spark profiler stop.

Retour à Réduire le lag