Vous devez analyser le problème et trouver une solution en éliminant les causes possibles. Voici les principales raisons du décalage :
- manque de mémoire
- Lecture HD
- Charge du CPU
- les bogues du logiciel.
Tous ces problèmes peuvent être résolus en ajoutant du matériel, mais selon la taille de votre serveur, vous ne pourrez pas les résoudre de façon permanente. Ils reviendront une fois le goulot d'étranglement atteint.
Tout d'abord, vous devez savoir où se trouve le goulot de la bouteille.
mémoire Pour la mémoire, vous avez besoin d'un des plugins qui vous permettent de surveiller l'utilisation de la mémoire. Essentials et Commandbook le permettent (AFAIk). Vous devez également vous assurer que votre serveur n'alloue pas toute la mémoire dès le départ, car cela vous empêchera de voir comment l'utilisation de la mémoire évolue. J'ai la commande de démarrage suivante pour un Quad core 16GB :
java -Xmx10G -Xmn512M -XX:ParallelGCThreads=4 -jar craftbukkit.jar nogui
Cela définit 512MB pour les trucs qui bougent plus vite et m'a beaucoup aidé. J'ai une utilisation maximale de 10 Go. Lorsque je démarre le serveur, il utilise à peu près seulement 2 Go et je peux voir avec la commande /mem de l'essentiel où je suis comme il augmente lentement au cours de la journée. Si vous vous rendez compte que vous manquez de mémoire, un redémarrage est souvent la seule solution. Il y a beaucoup de plugins qui ont des fuites de mémoire et qui ne rendent pas la mémoire après l'avoir utilisée. Un redémarrage programmé (je le fais une fois par 24 heures, lorsqu'il est 4 heures du matin aux États-Unis) fait l'affaire. Cela ne prend que 30 à 60 secondes de toute façon. Vous devez lire cette page pour avoir une meilleure idée des paramètres.
Chargement HD Celle-ci est plus délicate à détecter. Il est principalement affecté par les personnes qui rejoignent, quittent ou se téléportent, par une grande distance de visualisation et par une répartition générale des utilisateurs sur de grands espaces. La solution la plus simple est d'utiliser un disque de RAM. Si vous êtes à court de RAM, rappelez-vous que si vous avez plusieurs mondes, vous n'avez pas besoin d'avoir TOUS vos mondes dans le disque RAM. Créez un disque RAM et ne mettez que votre monde le plus fréquemment déplacé dedans, faites un lien symbolique et tout ira bien.
Charge du CPU Cette question est délicate car il y a plusieurs choses que vous aurez du mal à trouver. Les spawners mob, la redstone, les animaux et les mobs en général, peuvent causer beaucoup de lag. Vous devrez surveiller votre niveau de CPU. Vérifiez s'il fluctue si certains utilisateurs se joignent à vous ou si les gens vont dans certaines zones. Un de mes utilisateurs avait un grand champ de glace avec des torches dessus. Les torches faisaient fondre la glace de façon permanente et elle gelait à nouveau. Cela faisait perdre beaucoup de temps au serveur. Il existe également des plugins qui limitent le nombre de mobs. Les moutons qui mangent de l'herbe qui repousse sont un problème ici. Si vous avez des utilisateurs qui pensent qu'ils ont besoin d'une ferme de moutons avec 2 000 moutons, vous avez des problèmes. Établissez des règles et vérifiez ou limitez avec des plugins. Redstone est mauvais s'il fonctionne en permanence sans que personne n'appuie sur un bouton de démarrage. Vous devez établir une règle selon laquelle les engins de redstone ne doivent pas fonctionner tout seuls pendant plus de 2 ou 3 minutes. Obtenez un plugin comme Nolag et utilisez la commande /nl examine pour voir si vous pouvez localiser le lag à un plugin spécial.
Bugs logiciels Comme je l'ai déjà mentionné, il existe de nombreux plugins qui utilisent beaucoup de CPU ou de mémoire. Minecraft lui-même, Bukkit etc inclus. Vous devriez essayer de toujours utiliser la dernière version de Bukkit et vous mettre à jour sur les plugins. Minecraft lui-même provoque un lag massif, par exemple lorsque vous avez de la lave ou de l'eau qui coule sur une surface en grande quantité. Les chutes d'eau et de lave ne posent pas de problème, mais une coulée de lave de 200 blocs de large sur des marches n'est pas bonne. Aussi, si vous avez un monde où vous n'avez pas besoin de grottes, remplissez-les. Cela empêchera les mobs d'apparaître et le rendu sera considérablement accéléré.
0 votes
Juste pour savoir combien de redstones vous avez sur votre serveur. Je sais que, par exemple, un phare prend beaucoup de jus du serveur juste pour le faire fonctionner.
0 votes
Pas grand-chose pour l'instant, mais à l'avenir, j'aimerais être en mesure de soutenir un bon nombre de projets. Pour l'instant, la pierre rouge n'est utilisée que pour l'éclairage et quelques portes de pistons. Les grandes constructions complexes en redstone sont généralement temporaires et sont démontées quelques jours après leur construction.
0 votes
Quelle est la ligne de commande utilisée pour démarrer le serveur ?
0 votes
java -Xmx8G -Xms8G -Djava.awt.headless=true -jar bukkit.jar
0 votes
J'ai 2 disques SCSI U320 de 300GB 10k RPM dans un RAID 1 matériel. Je l'ajouterai à la liste des spécifications.
0 votes
@BrentHacker Les gens ne se promènent pas beaucoup, donc je ne vois pas comment les coups de disque dur pourraient causer un décalage progressif.
0 votes
Nous avons constaté qu'une pierre rouge vraiment complexe est beaucoup pire que des tas de pierres rouges simples. Les circuits comportant plus d'un chemin à partir de la source d'énergie semblent être le problème. (Je suppose qu'il s'agit de la complexité du calcul de la tension ou de l'équivalent sur l'ensemble du circuit).
0 votes
Dans l'espoir que cela puisse aider, j'ai également essayé de déplacer les fichiers du monde sur un RAMDisk. Le serveur démarre plus rapidement et les morceaux se chargent un peu plus vite, mais j'ai toujours ce gros problème de décalage progressif.
0 votes
Votre
-Xmx8G
peut être un problème. Il indique à Java la quantité d'espace de stockage avec laquelle il doit commencer. S'il correspond à votre-Xms
(hard heap limit), vous pré-allouez tout le tas autorisé et il n'a nulle part où grandir (car il y a inévitablement des fuites de mémoire). Du moins, c'est ce que je comprends Essayez de commencer avec seulement 512M et laissez Java décider quand allouer plus de cette limite de 8G. Pour 4-5 joueurs, il ne devrait avoir besoin que d'une centaine de mégaoctets !0 votes
Je suppose que vous avez confondu Xmx et Xms. En réglant mon Xmx sur 512 et mon Xms sur 8G, j'obtiens
Incompatible minimum and maximum heap sizes specified
. En les intervertissant, le serveur démarre correctement, bien qu'il monte immédiatement à 3 Go (c'est également ce qu'il faisait lorsque Xmx et Xms étaient tous les deux à 8 Go).0 votes
@Dan Hm. Au moins, nous savons maintenant que quelque chose est réellement en utilisant de RAM tout de suite et ce n'est pas seulement une mauvaise ligne de commande. (Cela devrait encore améliorer un peu les choses en utilisant légèrement moins de RAM, et sera utile lorsque la source de l'engorgement de la RAM sera corrigée.)