Les plugins font lags ?

michris

Aventurier
8 Mai 2019
33
1
9
31
Bonjour , petite question toute bête mais sa l'aiderait beaucoup , mais est ce que les plugins font lags ? Car j'ai un petit PC mais j'aimerais bien utiliser des plugins a la place de mods qui sont souvent trop lourd pour moi. Et si oui/non , combien de ram le serveur a besoin pour bien tourner sans lag ?
 

DiscowZombie

Développeur
Staff
Modérateur
Support
2 Mars 2017
2 659
1
931
298
Alsace
www.discowzombie.fr
Salut,

question classique mais au combien importante donc je vais essayer d'en traiter les aspects majeurs pour te donner une idée du phénomène. Déjà, traitons le premier point, la charge des plugins sur les clients (les utilisateurs/les joueurs). Sauf cas exceptionnel, les plugins ne réduisent pas les performances d'un joueur. En effet, les actions d'un plugin s’exécutent du côté du serveur et sans vraiment impacter le joueur, donc de ce côté, pas trop de risques à se faire. Évidemment, si tu commences à faire apparaitre un million de particules sur un joueur, ses performances vont réduites, mais tu aurais eu le même phénomène si tu l'avais fait en Vanilla avec des commandes-blocks notamment, donc rien d'anormal lié aux plugins ici.

Maintenant, du côté du serveur. Là ce n'est pas la même histoire. Les plugins réagissent notamment à ce qui s’appelle des éventements, et font ensuite leur action. Par exemple, un événement sur lequel un plugin peut réagir est le fait qu'un joueur rejoigne le serveur. Les traitements et de manière générale une très grande partie de la logique que va faire un plugin sera faite de manière synchrone, c'est-à-dire, avec le serveur. Sans plugins, un serveur réalisé déjà un bon nombre d'actions ; par exemple, il s'occupe de générer la map, d'envoyer des informations aux joueurs sur les déplacements, etc, etc... Lorsque tu as un plugin, ses actions vont être faites avec. Je m'explique. Considérons mon plugin qui envoie un message sympathique aux joueurs lorsqu'ils se connectent. Aucun joueur n'est en ligne, la boucle du serveur fonctionne normalement (il est prêt à recevoir de nouvelles connexions, et fait déjà plein de traitement derrière). Lorsque je me connecte au serveur, il va envoyer un éventement signalent que je viens de me connecter. À ce moment-là, mon plugin qui écoute va faire son traitement (dans mon exemple, m'envoyer un message). Pendant que mon plugin m'envoie le message, le serveur ne fait rien d'autre. C'est-à-dire, qu'il attend que mon plugin ait fini son action (envoyé un message) pour reprendre la boucle du jeu. Dans le cas de l’envoi d'un message, l'action est très rapide (quelques millisecondes).

Avec cette logique, on est déjà mieux armé pour comprendre ce qui se passe. Chaque événement d'un plugin va ralentir un peu le serveur (c'est encore un peu simpliste, mais l'idée est là). Tu comprends donc que si trop de plugins font trop d'actions gouteuses, cela va se ressentir sur tes performances. Cependant, ce genre d'action est assez rapide s’exécuter donc normalement tu as de la marge. Le plus gros floué pour toi c'est les plugins qui font des opérations d'écritures ou de lecture de façon synchrone. Quand on parle d'opérations de lecture ou d'écriture, ce sont des opérations qui "sortent" du serveur Minecraft. Dans mon exemple plus haut, envoyé un message à un joueur ça reste sur le serveur - le serveur sait comment faire et c'est plutôt rapide. Par contre, écrire un fichier ou lire des données depuis un serveur de base de données, ce n'est pas la même histoire. Dans le cas des bases de données ; il faut le temps d'envoyer la requête, ensuite elle doit éventuellement passer dans le réseau si ce n'est pas en local, elle doit être exécuté et ensuite seulement le résultat doit te revenir. Ici on ne parle plus de quelques millisecondes, mais quelques centaines de millisecondes. Et là tu t'imagines bien que ça peut assez rapidement affecter tes performances serveurs. Heureusement, il existe l'asynchrone (qui permet au serveur de continuer de fonctionner pendant ce genre d'actions) mais les développeurs Bukkit sont loin d'être tous informés à ce propos. De manière générale, l'API Bukkit par son âge n'incite pas du tout à faire du code propre et "2019-style" mais plutôt "2010-style".

Enfin, pour répondre à ta question de combien de RAM, je vais juste te répondre que c'est inestimable. La consommation de ton serveur va dépendre de chacun de tes plugins et de leur configuration, donc ce n'est pas possible d'avoir une estimation qui s'approche d'une réalité comme cela. De plus, et j'insiste sur ce point, la mémoire vive (ou RAM) est très très rarement facteur limitant sur les serveurs Minecraft. En réalité, dans presque la totalité des cas, c'est les performances du processeur qui ralentissent ton serveur (et non pas la RAM). De manière générale, il faut largement privilégier la fréquence du processeur (en Hertz, les serveurs très haut de gamme et idéaux pour Minecraft ayant 5 Ghz), plutôt que la RAM.