Aller au contenu

Wiki

Révision #1113

Enregistrée le 15 août 2026 à 11:36

Auteur: vyrriox Type: Édition « Corrections vérifiées dans les scripts du serverpack: GraalVM doit être posé dans le dossier du serveur, et seul run.sh le détecte, run.bat ne teste que jre21. Taille réelle du pack ajoutée. »
Cette révision #1113

Optimiser son serveur

Choix de la JVM

Le pack utilise Eclipse Temurin JRE 21 par défaut: libre, stable, open-source, déjà embarqué dans jre21/ et actif via user_jvm_args.txt. C'est le meilleur choix pour 99 % des cas et la compatibilité maximale avec les mods.

Pour plus de performances sur un gros serveur, tu peux passer à Oracle GraalVM 21: 5 à 15 % plus rapide sur les contraptions Create grâce à la vectorisation SIMD et au compilateur JVMCI. En contrepartie, c'est un téléchargement d'environ 300 Mo, une install manuelle et une licence Oracle.

  1. 1 Télécharge Oracle GraalVM 21 sur graalvm.org/downloads (Java 21, ta plateforme).
  2. 2 Extrais le dossier dans le dossier du serveur, à côté de jre21, et renomme-le en graalvm21.
  3. 3 Active les flags GraalVM. Windows: ren user_jvm_args.txt user_jvm_args_temurin.txt puis ren user_jvm_args_graalvm.txt user_jvm_args.txt. Linux: mêmes commandes avec mv.

La détection automatique ne marche que sous Linux

run.sh cherche d'abord jre21/, puis graalvm21/: sous Linux, il suffit de poser le dossier au bon endroit. Sous Windows, run.bat ne teste que jre21\ et ignore GraalVM. Pour l'utiliser quand même, remplace le contenu de jre21\ par celui de GraalVM, ou édite la ligne JAVA_BIN de run.bat.

Vérifie dans les logs

Au démarrage, la version de Java s'affiche avant le lancement du serveur: tu dois y voir GraalVM à la place de Temurin. Le fichier user_jvm_args_graalvm.txt est déjà fourni dans le pack, tu n'as pas à le créer.

Le détail de chaque argument passé à Java, ligne par ligne, est expliqué dans Arguments JVM et RAM.

Diagnostiquer les lags avec Spark

Spark est un mod de profiling déjà inclus dans le modpack. Il identifie précisément la cause des baisses de TPS, des freezes ou des crashes watchdog. Les commandes se tapent dans la console serveur, sans slash au début:

  • spark health: check rapide de santé (TPS, CPU, RAM, GC).
  • spark profiler start --thread Server --timeout 60: profile le thread serveur pendant 60 s puis affiche une URL cliquable à transmettre à l'admin.
  • spark profiler start --thread * --timeout 30: profile tous les threads, idéal pour repérer un deadlock quand le serveur freeze.
  • spark tps: TPS et durée de tick courants.

Le plus utile à envoyer

L'URL Spark générée par le profiler est l'information la plus importante en cas de bug. Joins-y l'heure du problème en UTC, ce qui se passait, le nombre de joueurs, ainsi que le fichier latest.log.

Réduire le lag

Deux mods s'en chargent déjà en partie: ServerCore abaisse tout seul la distance de simulation et le plafond de monstres quand la charge monte, et Chunky permet de générer le monde à l'avance pour éviter le pire coût d'un serveur moddé. Les deux sont détaillés sur Chunky et ServerCore.

Si le serveur affiche des warnings Can't keep up!, c'est qu'il est surchargé. Plusieurs leviers dans server.properties:

  • Baisse la simulation-distance: c'est le rayon de chunks réellement simulés, souvent le plus gros gain.
  • Baisse la view-distance pour alléger le chunk loading côté serveur.
  • Réduis le nombre de mobs et d'entités actives (fermes trop grosses, animaux en masse).

Lance un spark profiler pour identifier ce qui coûte le plus avant de tout baisser à l'aveugle.

Alléger les mods gourmands

Avant de chercher plus loin, sache que le pack embarque ArcadiaTweaks, un mod maison qui retire du travail inutile à Botany Pots, Refined Storage et Mekanism. Ses trois modules se désactivent séparément, ce qui aide à isoler l'origine d'une baisse de performance.

Que faire en cas de crash

Un crash n'est jamais silencieux: le serveur laisse des traces à analyser.

  • Regarde le dossier crash-reports/: le fichier le plus récent contient la cause exacte du crash.
  • Consulte latest.log dans le dossier logs/ pour le contexte juste avant le plantage.
  • En cas de crash watchdog (tick bloqué), relance avec un profiling spark profiler start --thread * --timeout 30 la prochaine fois pour capter le deadlock.

La console se ferme instantanément?

Sous Windows, si la fenêtre se ferme tout de suite, Java a planté très tôt. Lance run_java21.bat pour garder l'erreur visible à l'écran et pouvoir la lire.

Pour transmettre un bug proprement, garde sous la main l'URL Spark, l'heure en UTC, le crash report et le latest.log. Reviens aux étapes de base dans Installer son serveur et Lancer et configurer son serveur. Si le souci vient d'un lag audio côté client, vois Corriger le lag audio.

Version actuelle

Optimiser son serveur

Choix de la JVM

Le pack utilise Eclipse Temurin JRE 21 par défaut: libre, stable, open-source, déjà embarqué dans jre21/ et actif via user_jvm_args.txt. C'est le meilleur choix pour 99 % des cas et la compatibilité maximale avec les mods.

Sur un serveur bien chargé, Oracle GraalVM 21 peut faire gagner quelques points de performance grâce à son compilateur, surtout sur le calcul intensif comme les grosses machines de Create. Le gain dépend beaucoup de la charge réelle et n'a rien d'automatique: mesure avant et après avec Spark plutôt que de le supposer. En contrepartie, c'est un téléchargement d'environ 300 Mo, une installation manuelle et une licence Oracle à accepter.

  1. 1 Télécharge Oracle GraalVM 21 sur graalvm.org/downloads (Java 21, ta plateforme).
  2. 2 Extrais le dossier dans le dossier du serveur, à côté de jre21, et renomme-le en graalvm21.
  3. 3 Active les flags GraalVM. Windows: ren user_jvm_args.txt user_jvm_args_temurin.txt puis ren user_jvm_args_graalvm.txt user_jvm_args.txt. Linux: mêmes commandes avec mv.

La détection automatique ne marche que sous Linux

run.sh cherche d'abord jre21/, puis graalvm21/: sous Linux, il suffit de poser le dossier au bon endroit. Sous Windows, run.bat ne teste que jre21\ et ignore GraalVM. Pour l'utiliser quand même, remplace le contenu de jre21\ par celui de GraalVM, ou édite la ligne JAVA_BIN de run.bat.

Vérifie dans les logs

Au démarrage, la version de Java s'affiche avant le lancement du serveur: tu dois y voir GraalVM à la place de Temurin. Le fichier user_jvm_args_graalvm.txt est déjà fourni dans le pack, tu n'as pas à le créer.

La méthode la plus simple, recommandée par le pack

Le fichier user_jvm_args_graalvm.txt livré avec le serveur donne une alternative plus courte: remplacer le contenu de jre21/ par celui de GraalVM. Les scripts de lancement continuent alors de pointer au bon endroit sur les deux systèmes, et tu n'as qu'à activer les arguments GraalVM. Pense à garder une copie de l'ancien dossier si tu veux revenir en arrière.

Le détail de chaque argument passé à Java, ligne par ligne, est expliqué dans Arguments JVM et RAM.

Diagnostiquer les lags avec Spark

Spark est un mod de profiling déjà inclus dans le modpack. Il identifie précisément la cause des baisses de TPS, des freezes ou des crashes watchdog. Les commandes se tapent dans la console serveur, sans slash au début:

  • spark health: check rapide de santé (TPS, CPU, RAM, GC).
  • spark profiler start --thread Server --timeout 60: profile le thread serveur pendant 60 s puis affiche une URL cliquable à transmettre à l'admin.
  • spark profiler start --thread * --timeout 30: profile tous les threads, idéal pour repérer un deadlock quand le serveur freeze.
  • spark tps: TPS et durée de tick courants.

Le plus utile à envoyer

L'URL Spark générée par le profiler est l'information la plus importante en cas de bug. Joins-y l'heure du problème en UTC, ce qui se passait, le nombre de joueurs, ainsi que le fichier latest.log.

Réduire le lag

Deux mods s'en chargent déjà en partie: ServerCore abaisse tout seul la distance de simulation et le plafond de monstres quand la charge monte, et Chunky permet de générer le monde à l'avance pour éviter le pire coût d'un serveur moddé. Les deux sont détaillés sur Chunky et ServerCore.

Si le serveur affiche des warnings Can't keep up!, c'est qu'il est surchargé. Plusieurs leviers dans server.properties:

  • Baisse la simulation-distance: c'est le rayon de chunks réellement simulés, souvent le plus gros gain.
  • Baisse la view-distance pour alléger le chunk loading côté serveur.
  • Réduis le nombre de mobs et d'entités actives (fermes trop grosses, animaux en masse).

Lance un spark profiler pour identifier ce qui coûte le plus avant de tout baisser à l'aveugle.

Alléger les mods gourmands

Avant de chercher plus loin, sache que le pack embarque ArcadiaTweaks, un mod maison qui retire du travail inutile à Botany Pots, Refined Storage et Mekanism. Ses trois modules se désactivent séparément, ce qui aide à isoler l'origine d'une baisse de performance.

Que faire en cas de crash

Un crash n'est jamais silencieux: le serveur laisse des traces à analyser.

  • Regarde le dossier crash-reports/: le fichier le plus récent contient la cause exacte du crash.
  • Consulte latest.log dans le dossier logs/ pour le contexte juste avant le plantage.
  • En cas de crash watchdog (tick bloqué), relance avec un profiling spark profiler start --thread * --timeout 30 la prochaine fois pour capter le deadlock.

La console se ferme instantanément?

Sous Windows, si la fenêtre se ferme tout de suite, Java a planté très tôt. Lance run_java21.bat pour garder l'erreur visible à l'écran et pouvoir la lire.

Pour transmettre un bug proprement, garde sous la main l'URL Spark, l'heure en UTC, le crash report et le latest.log. Reviens aux étapes de base dans Installer son serveur et Lancer et configurer son serveur. Si le souci vient d'un lag audio côté client, vois Corriger le lag audio.