Optimiser les performances de votre serveur Minecraft sur Pterodactyl
Découvrez comment optimiser les performances de votre serveur Minecraft sous Pterodactyl avec les flags Java d'Aikar et des configurations Docker efficaces.
Le Guide Ultime : Optimiser un Serveur Minecraft de A à Z
Beaucoup pensent qu'il suffit d'ajouter de la RAM pour qu'un serveur Minecraft arrête de lagger. En tant qu'administrateur système, je peux vous dire que c'est faux. L'optimisation d'un serveur Minecraft (surtout sous Pterodactyl) se joue à plusieurs niveaux : le choix du moteur, la configuration des fichiers, la gestion de la machine virtuelle Java (JVM) et la génération du monde.
Voici le guide complet pour obtenir des TPS (Ticks Per Second) parfaits, même avec des dizaines de joueurs.
1. Le choix du Moteur (Software) : Oubliez Vanilla
L'erreur numéro un est d'utiliser le serveur officiel de Mojang (Vanilla) ou Spigot. Ils sont extrêmement mal optimisés pour le multijoueur à grande échelle.
Voici ce que vous devez installer selon votre besoin :
| Moteur | Cas d'usage | Recommandation |
|---|---|---|
| PaperMC | Serveur survie / mini-jeux standard. | ⭐ Le standard de l'industrie. Très stable, patch la majorité des bugs de duplication et optimise les entités. |
| Purpur | Serveur nécessitant des performances extrêmes. | 🚀 Mon choix numéro 1. Un fork de Paper qui ajoute des optimisations agressives et permet de configurer le comportement des mobs. |
| Fabric | Serveur moddé (Vanilla+). | 🛠️ Si vous voulez l'expérience Vanilla pure mais fluide. Ajoutez impérativement les mods Lithium et FerriteCore. |
| Folia | Serveur massif (100+ joueurs sur une map). | 🏢 Divise la carte en "régions" gérées par différents cœurs du CPU. (Attention, casse beaucoup de plugins). |
2. Configuration Pterodactyl : Java & Aikar's Flags
Le Garbage Collector de Java est souvent le responsable des pics de lag (micro-pauses). Pour lisser cela, on utilise les Flags d'Aikar.
Étape 1 : Le bon environnement Docker
Dans Pterodactyl, allez dans l'onglet Startup. Assurez-vous d'utiliser la bonne version de Java selon la version du jeu :
- Minecraft 1.20.5 et + : Java 21
- Minecraft 1.18 à 1.20.4 : Java 17
Étape 2 : Les Startup Flags
Remplacez la commande de démarrage par défaut par celle-ci (valable pour les serveurs ayant entre 4 Go et 10 Go de RAM) :
-Xms{{SERVER_MEMORY}}M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1
3. Les Fichiers de Configuration (Le Cœur)
C'est ici que la magie opère. Ne remplacez pas tout votre fichier, modifiez uniquement ces valeurs spécifiques via votre accès SFTP ou l'onglet Files.
A. Dans server.properties
Séparez la distance d'affichage de la distance de simulation.
view-distance=7
simulation-distance=4
network-compression-threshold=256
B. Dans bukkit.yml
Modifiez les intervalles d'apparition des monstres pour qu'ils s'accumulent moins vite.
ticks-per:
animal-spawns: 400
monster-spawns: 10
C. Dans spigot.yml
L'objectif est de "fusionner" les entités au sol (items, orbes d'XP) et de limiter la portée d'activation de l'IA des monstres.
world-settings:
default:
merge-radius:
item: 4.0
exp: 6.0
entity-activation-range:
animals: 16
monsters: 24
misc: 8
D. Dans config/paper-world-defaults.yml
Désactivez les calculs de collision inutiles, un vrai soulagement pour le CPU.
collisions:
enable-player-collisions: false
max-entity-collisions: 2
4. Pré-génération de la Map (Obligatoire)
La génération de nouveaux chunks en temps réel est la cause numéro 1 des crashs sur les serveurs peuplés. Si 5 joueurs partent explorer dans des directions opposées, votre CPU atteindra 100%.
La solution : Le plugin Chunky. Ce plugin génère la carte à l'avance. Le CPU travaille une bonne fois pour toutes, et ensuite, ce n'est plus qu'une simple lecture sur le disque NVMe.
Méthode d'exécution :
- Installez le plugin Chunky et ChunkyBorder.
- Lancez ces commandes depuis la console (Attention : faites-le la nuit, le serveur va énormément lagger pendant l'opération) :
# Centre la génération sur le spawn
chunky center 0 0
# Définit un rayon de 7000 blocs, suffisant pour 95% des serveurs
chunky radius 7000
# Lance la génération. Peut prendre plusieurs heures !
chunky start
- Une fois terminé, verrouillez la frontière pour empêcher les joueurs de générer au-delà et de faire lagger le serveur :
chunkyborder add 7000
5. Optimisations Avancées (Niveau Expert)
Pour des infrastructures d'hébergement professionnelles, il faut gratter les derniers pourcentages de performance.
A. Optimiser l'IA avec Pufferfish (Purpur)
Si vous utilisez Purpur, vous bénéficiez du système DAB (Dynamic Activation of Brains). Au lieu de couper brusquement l'IA des mobs lointains, il la ralentit proportionnellement à la distance, soulageant massivement le processeur.
Dans pufferfish.yml :
dab:
enabled: true
max-tick-freq: 20
activation-dist-mod: 8
B. Décharger le stockage (I/O) avec MariaDB
Les plugins lourds comme CoreProtect ou LuckPerms écrivent en permanence sur le disque. Liez toujours ces plugins à une base de données MySQL/MariaDB externe au lieu des fichiers locaux (SQLite) pour éviter les goulots d'étranglement.
Exemple dans plugins/CoreProtect/config.yml :
use-mysql: true
mysql-host: 127.0.0.1 # IP de la base de données
mysql-port: 3306
mysql-database: coreprotect
C. Réglages Docker sur Pterodactyl (Côté Admin)
Dans l'onglet Build Configuration du panel admin :
- OOM Killer : Désactivez-le (
false). Mieux vaut que le Garbage Collector de Java fasse son travail en cas de manque de mémoire plutôt que Docker tue violemment le processus au risque de corrompre la carte. - Swap : Fixez-le à
0. Si Minecraft commence à utiliser le Swap (la RAM virtuelle sur le disque), les TPS chuteront instantanément.
Conclusion
Optimiser un serveur, c'est trouver le point d'équilibre entre l'expérience de jeu Vanilla et les capacités matérielles. Avec ces configurations matérielles et logicielles, vos entités consommeront beaucoup moins de ressources, et la pré-génération éliminera les pics de lag liés à l'exploration.