Je tiens à souligner ce point : la source du problème du réseau n'est peut-être pas le réseau.
Temps d'assemblage d'environ 10 secondes
Le joueur peut ouvrir des coffres et casser/placer des blocs. Lorsqu'ils interagissent, les autres joueurs peuvent voir l'interaction immédiatement, mais le joueur concerné ne voit pas l'action prévue avant 10 à 20 secondes environ.
Parfois, mais pas toujours, le joueur quitte le serveur mais son modèle de joueur reste sur le serveur. Lorsque cela se produit, je peux (en tant qu'administrateur) exécuter la commande "kick" et il est indiqué que le coup de pied a été donné avec succès. Cependant, le joueur reste sur le serveur et il reste dans le menu d'onglet.
Tout ça, c'est du "lag". Il peut s'agir d'une faible bande passante, d'une latence, etc. Il n'est pas vraiment utile d'écarter ce qui ne va pas.
À une occasion, j'ai essayé de donner un coup de pied au joueur lorsque cela se produisait et, au lieu de cela, ce qui suit est apparu dans le chat comme si je l'avais dit : exception interne io.netty.handler.codec.decoderexception
La documentation sur DecoderException suggèrent que cela se produit lorsque la partie réceptrice est incapable de reconstruire les données envoyées.
Cela pourrait être :
- Les paquets sont abandonnés ou dépassent le délai d'attente
- La mémoire tampon du réseau est corrompue (défaillance de la mémoire).
- Paquets corrompus sur le réseau
À un moment donné, le joueur a tenté de rejoindre le serveur et a reçu un message d'erreur similaire qui a été répété dans la console (malheureusement, je ne l'ai pas noté).
Idem.
Le joueur voit des résultats de tracert légèrement moins bons vers mon IP lorsqu'il est connecté au serveur.
On dirait que la route la plus rapide entre vous ne peut pas gérer le trafic, qu'elle est saturée, et que le réseau a trouvé une route avec plus de bande passante mais plus de latence.
Edit : ça ne devrait pas arriver. Cela suggère qu'à un certain point du réseau, la connexion n'est pas assez bonne.
Le lecteur et moi-même disposons de connexions Internet généralement stables (ping de 10 à 40 ms, débit descendant de 5 à 15 Mbps et débit montant de 3 à 5 Mbps).
Cela ne semble pas être le problème.
Le joueur dispose d'une bonne connexion sur les autres serveurs Minecraft.
Cela suggère que le problème ne se situe pas au niveau du dernier kilomètre du client.
Le joueur et moi sommes situés à moins de 10 km l'un de l'autre.
C'est bizarre. Parce que si ce n'est pas le dernier kilomètre, nous devrions blâmer le réseau métropolitain pour cela. Edit : Nous devons partir du principe que le réseau métropolitain est installé correctement et qu'il n'est pas défaillant.
Aucun autre joueur ne subit de décalage de cette nature
A quelle distance de vous se trouvent les autres joueurs ?
Nous avons essayé de créer des règles de pare-feu Windows aux deux extrémités pour les connexions entrantes et sortantes.
Nous avons essayé de régler le niveau du pare-feu sur "laxiste" sur le routeur hôte.
Cela ne devrait pas être un problème
Nous avons essayé de redémarrer le routeur hôte.
Ok.
Nous avons essayé de détruire tous les signes sur le serveur (Googler l'erreur Java donne des résultats sur le fait que c'est le problème sur les serveurs 1.8~ Spigot mais je doute que ce soit le problème).
Spigot - pour ce que j'ai lu - est une bifurcation de Bukkit. Vous avez dit que vous utilisez "essentiellement" Vanilla, utilisez-vous Spigot pour cela ? Si c'est le cas, cela pourrait valoir la peine d'enquêter.
Vous n'utilisez pas Spigot, alors ce n'est pas le problème.
J'ai essayé d'ajouter de la RAM au serveur (8 gigaoctets au total maintenant).
Avez-vous remplacé votre ancienne mémoire vive, ou simplement ajouté une nouvelle carte ?
Si vous venez d'ajouter une nouvelle carte, essayez sans l'ancienne. Une carte RAM peut être défectueuse de telle sorte que le système d'exploitation puisse se charger, mais que la mémoire soit corrompue en cours de route.
Aussi, essayez Memtest (Téléchargez l'ISO, gravez-le et démarrez avec). Il vous dira s'il y a un problème non évident avec votre RAM. Note : Memtest est plus complet que le diagnostic mémoire de Windows.
Remarque : D'après mon expérience avec Minecraft, le disque dur a tendance à être le goulot d'étranglement.
Addendum : Faire tourner le serveur Minecraft n'améliore pas nécessairement les performances, cela permettra au serveur de garder plus de chunks chargés, qui à leur tour se traduisent par plus d'unités étant spawn, et plus d'unités mangent plus de temps CPU.
Le lecteur n'avait pas de problème de lag, mais je ne vois pas ce qui a changé depuis que cela a commencé il y a une semaine environ.
Je vais spéculer pour vous. Considérez ce qui suit :
-
Ce n'est peut-être pas la faute du serveur, de l'IPS ou du client. Il se peut qu'au moment où le client se connecte, quelque chose d'autre se passe également... par exemple, d'autres personnes sur des réseaux proches du client ont un programme où ils regardent des films en ligne ou du contenu en streaming au même moment où le client rejoint le jeu.
-
C'est peut-être un vieux matériel qui commence à tomber en panne. Dans ce cas, ni vous, ni le client n'avez fait de changement intentionnel qui a déclenché le problème. Addendum : Il est peu probable qu'un vieux matériel affecte un seul client, à moins qu'il ne s'agisse d'un problème sur un routeur le long du trajet entre le client et le serveur.
-
Ça pourrait être un logiciel malveillant. Par exemple, un réseau de robots pourrait utiliser le réseau. Il peut être intéressant de rechercher un éventuel logiciel malveillant des deux côtés. Encore une fois, dans ce cas, vous n'avez rien changé intentionnellement. Addendum : Un réseau de zombies qui a compromis à la fois le client et le serveur pourrait utiliser la connexion entre eux pour déplacer les données et consommer la bande passante.
-
Il pourrait s'agir de mises à jour automatiques. Soit le changement s'est produit à cause d'une mise à jour qui a placé un composant défectueux, ou plus probablement, a ajouté une tâche planifiée qui ajoute de la latence. Addendum : cela ne devrait pas affecter un seul client. Pourtant, je ne sais pas, les bugs sont des bugs.
Il serait en fait plus facile de formuler des théories sur le problème si vous aviez plusieurs clients présentant le même problème, car nous pourrions alors essayer de déterminer ce qu'ils ont en commun.
C'est ce que vous allez essayer :
- Diagnostiquez la mémoire du serveur (memtest). Remplacez toute carte qui signale des erreurs.
- Si le serveur est sur un réseau sans fil, essayez une connexion filaire.
- Identifiez et arrêtez tous les autres services qui pourraient être à l'écoute du réseau sur le serveur et le client. Essayez nmap pour s'assurer que seuls les ports qui correspondent à Minecraft sont utilisés. Il y a un outil GUI pour NMap, ou si vous devez utiliser le terminal... Debian a une bonne introduction .
- Lancez une analyse à l'aide de votre logiciel antivirus préféré.
Si votre serveur est sous Windows :
- Essayez d'utiliser SysinternalsSuite . En particulier :
- Utilisez Autoruns pour identifier ce qui est exécuté au démarrage de Windows. Configurez-le pour vérifier les signatures des entrées (pour voir si elles ont été altérées) et pour envoyer des échantillons à VirusTotal pour voir si un logiciel antivirus les identifie comme des logiciels malveillants.
- Utilisez également Explorateur de processus et le configurer pour qu'il fasse de même avec le logiciel en cours d'exécution lorsque les problèmes surviennent.
- Exécuter
sfc /scannow
sur un terminal avec des privilèges élevés, il vérifiera si des fichiers système ont été altérés, et tentera de les réparer. Si cela échoue, passez à Dism /Online /Cleanup-Image /RestoreHealth
. En cas d'échec, rendez-vous sur le site d'assistance de Microsoft.
- Exécutez les mises à jour de Windows.
Si vous êtes sous Linux, suivez les instructions de la documentation de votre distro pour identifier et corriger les paquets cassés.
Avec la collaboration du client :
- Si le client est sur un réseau sans fil, essayez une connexion filaire.
- Demandez au client d'essayer de se connecter en dehors des heures habituelles (s'il se connecte souvent le soir, essayez le matin ou vice versa).
- Assurez-vous qu'ils ne font pas tourner d'autres choses qui prennent des ressources pendant la session de jeu. Un outil tel que Razer Cortex suffirait. Si le client le souhaite, il peut aussi essayer nmap.
- Essayez de vous connecter via un VPN. J'ai utilisé avec succès DynVPN à ces fins. Cela permettra également de mesurer plus facilement le trafic entre le serveur et le client.
Diagnostics avancés :
Si les options ci-dessus n'ont pas fonctionné, nous sommes en territoire de rendements décroissants. Ce que je pourrais suggérer est de capturer le trafic réseau. Cependant, rappelez-vous que le coupable n'est peut-être pas sous votre contrôle.
- Utilisez Wireshark aux deux extrémités et capturez une session de jeu de test (rejoignez le serveur, effectuez quelques changements sur le monde, quittez le serveur). Vous pouvez également essayer cela sur le VPN. S'il y a des paquets abandonnés, s'il y a une latence du réseau, s'il y a des paquets corrompus... vous le verrez là. HowToGeek propose un bon guide de démarrage sur Wireshark.
- Utilisez Scapy . Il permet des analyses plus puissantes que Wireshark, mais il est plus difficile à utiliser... parce que c'est une bibliothèque Python ! Si vous êtes familier avec Python, suivez les instructions de la page Tutoriel Scapy pour vous aider à démarrer.