Aller au contenu

Wiki

Révision #1467

Enregistrée le 10 octobre 2026 à 9:35

Auteur: YoupaX Type: Contribution « Relecture : jargon anglais remplacé par le français (établi, monstres, objets, butin, fin de partie, paliers). »
Cette révision #1467

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.

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.

À partir de la version 2.0.33, le pack propose aussi un profileur de ticks intégré, dans l'Arcadia Admin Panel: il mesure le coût de chaque entité et de chaque bloc-entité, classe les résultats par mod, par chunk ou par dimension, et colore les coupables directement dans le monde. Il remplace l'ancien mod Observable.

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 monstres 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.

Les tas d'objets au sol

Une ferme qui déborde ou un convoyeur bouché peut laisser des milliers d'objets par terre, et c'est un classique du lag. Depuis la version 2.0.35, le serverpack embarque Leaky 3.6, qui surveille ces tas, les met en évidence et les nettoie avant qu'ils fassent ramer le serveur. Aucun fichier de réglage n'est livré: ce sont les valeurs par défaut du mod qui s'appliquent.

Taille du tasCe que fait Leaky
32 objets au solLe tas est suivi
100Le tas brille et une alerte part dans le chat, au joueur le plus proche (à 200 blocs au plus) et à tous les opérateurs
300Après au moins 120 secondes d'observation, le tas peut être supprimé automatiquement, 30 secondes après l'avertissement
1000Suppression immédiate, pour éviter un plantage

Un tas compte les entités au sol, pas les objets: une pile de 64 pierres posée par terre compte pour une seule. /leaky status liste les tas suivis, et /leaky deletionHistory montre ceux supprimés depuis le dernier redémarrage, avec un bouton pour les restaurer.

L'envoi des chunks

Chunk Sending 4.1 règle la façon dont le serveur envoie le terrain aux joueurs. Avec la configuration du pack (config/chunksending.json), les chunks devant toi arrivent en premier, un joueur reçoit au plus 5 chunks par tick, et le serveur n'en envoie pas plus de 80 par tick au total: beaucoup de joueurs qui se connectent en même temps ne saturent plus le réseau. Les cartes posées dans des cadres sont aussi mises à jour moins souvent: toutes les 5 secondes, ou chaque seconde pour les joueurs proches.

Les entités emballées

Depuis la version 2.0.35, ArcadiaTweaks arrête toute entité qui veut parcourir plus de 100 blocs en un tick et la note dans le journal: un mob de l'Aether dont la vitesse s'était emballée pouvait figer le serveur jusqu'au watchdog. Le réglage se trouve dans la section [safety] de config/arcadiatweaks-common.toml.

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.