Blizzard revient sur les récents problèmes liés à Diablo II : Resurrected

Explications et solutions en approche !
Arkentass | 14/10/2021 à 19h18 - 23

Dans un message publié il y a quelques instants, Blizzard revient sur les récents problèmes liés à Diablo II : Resurrected et ce sur quoi les développeurs travaillent actuellement afin de les résoudre, avec notamment l'arrivée prochaine d'une file d'attente. Retrouvez davantage d'informations dans le message complet ci-dessous.

Update 20h31 : La traduction du message est terminée !

Bonjour à tous. 

Depuis le lancement de Diablo II : Resurrected, nous avons eu plusieurs problèmes de serveurs, et nous souhaitons apporter de la transparence autour de la cause de ces derniers et les étapes que nous avons effectué jusqu'à présent afin de les résoudre. Nous souhaitons également vous donner une idée de ce que nous allons faire par la suite. 

Tl:dr : Nos pannes de serveurs n'ont pas été causées par un unique problème, nous résolvons chaque problème lorsqu'ils surviennent, à la fois avec des solutions à court terme et à long terme avec des changements d'architecture. Un petit nombre de joueurs fut impacté par une perte de progression - désormais, chaque perte due à un problème de serveur devrait être limitée à quelques minutes. Ce n'est pas une solution complète pour nous, et nous continuons de travailler sur ce problème. Notre équipe, avec l'aide d'autres membres de Blizzard, travaillent à apporter l'expérience de jeu à un niveau qui est bon pour tout le monde.

Nous allons rentrer un peu dans les détails à présent avec certaines spécificités techniques, mais nous espérons que globalement, cela aide à comprendre pourquoi ces pannes ont eu lieu et ce que nous avons fait afin de résoudre chacun d'eux, et la façon dont nous enquêtons sur la cause centrale. Commençons dès le début. 

Le(s) problème(s) avec les serveurs

Avant que nous parlions des problèmes, rentrons brièvement dans le contexte de la façon dont nos bases de données fonctionnement. D'abord, il y a la base de données globale, qui existe comme une source unique de vérité pour toutes les informations et la progression des personnages. Comme vous pouvez l'imaginer, c'est une tâche de taille pour une base de données, et celle-ci ne se débrouillerait pas toute seule. Afin de soulager la charge et la latence de notre base de données globale, chaque région - NA, EU et Asie- possède des bases de données individuelles, qui sauvegardent également les informations et la progression de vos personnages, et la base de données de votre région écrit périodiquement à la base de données globale. La plupart de vos actions en jeu sont effectuées vers la base de données régionale car c'est plus rapide, et votre personnage est 'verrouillé' ici afin de maintenir l'intégrité des sauvegardes de personnage. La base de données globale possède également une sauvegarde en cas de problème. 

En gardant cela à l'esprit, afin d'expliquer ce qu'il s'est passé, nous allons ne concentrer sur les temps d'indisponibilité ayant eu lieu depuis le 9 octobre. 

Samedi matin (heure US), nous avons subi une panne globale en raison d'un soudaine charge importante de trafic. C'était une nouvelle limite que nos serveurs n'avaient pas encore vécu, pas même au lancement. Ceci était exacerbé par une mise à jour que nous avions déployée le jour précédant afin d'améliorer les performances liées à la création de parties - ces deux facteurs combinés ont surchargé la base de données globale, la faisant s'arrêter. Nous avons décidé d'annuler la mise à jour de vendredi que nous avions précédemment déployée, espérant que cela faciliterait la charge des serveurs jusqu'à dimanche tout en nous donnant le temps d'enquêter plus profondément sur la cause du problème.

Le dimanche, cependant, il est devenu clair que ce que nous avions fait samedi n'était pas suffisant - nous avons vu une augmentation de trafic encore plus grande, causant une autre panne. Nos serveurs de jeu ont observé une déconnexion de la base de données et immédiatement essayé de se reconnecter, de manière répétée, ce qui signifie que la base de données n'a jamais eu le temps de rattraper le travail que nous avons effectué car elle était trop occupée à gérer le flux continu d'essais de connexion par les serveurs de jeu. Durant cette période, nous avons également vu que nous pouvions faire des améliorations de configuration à notre base de données, ce qui est nécessaire afin de restaurer un état sain en cas de défaillance de base de données, nous les avons donc effectués, et débuté une analyse de la cause plus poussée.

L'épée à double tranchant de la panne de dimanche existait en raison de ce à quoi nous avions fait face samedi, nous avions créé ce qui était essentiellement un livre sur la façon de s'en remettre rapidement. Ce qui est positif.

Mais comme nous sommes revenus en ligne si rapidement à une fenêtre de pic d'activité des joueurs, avec des centaines de milliers de parties en quelques dizaines de minutes, nous sommes tombés à nouveau. Ce qui est négatif. 

Nous avions donc de nombreux correctifs à déployer, dont des améliorations de configuration et de code, que nous avons déployé sur la base de données globale. Ce qui nous mène à lundi 11 octobre, où nous avons fait le passage entre les bases de données globales. Cela a conduit à une autre panne, lorsque notre base de données de sauvegarde continuait à tort d'effectuer son processus de sauvegarde, ce qui signifie passer la plupart de son temps à essayer de copier de l'autre base de données alors qu'elle aurait dû répondre aux demandes des serveurs. Durant cette période, nous avons découvert d'autres problèmes, et avons effectuer davantage d'améliorations - nous avons trouvé une requête désormais inexistence mais très demandante que nous pouvions éliminer entièrement de la base de données, nous avons optimisé les vérifications pour les joueurs qui rejoignent une partie, réduisant davantage la charge, et nous avons davantage d'améliorations de performance en test actuellement. Nous pensons également que nous avons résolu les problèmes de reconnexion de base de données que nous avons vu, car nous ne les avons pas vu se produire mardi.

Puis mardi, nous avons atteint un nouveau pic de joueurs simultanés, avec quelques centaines de milliers de joueurs dans une seule région. Cela a conduit à un incident ayant dégradé les performances de la base de données, dont la cause est actuellement ciblée par les ingénieurs de base de données. Nous avons fait appel à d'autres ingénieurs de Blizzard afin de travailler sur des correctifs plus petits pendant que notre équipe se concentre sur les problèmes de serveurs principaux, et nous avons contacté d'autres partenaires également.

Pourquoi cela se produit

En restant fidèle au jeu d'origine, nous avons gardé une grande partie du code de l'époque. Cependant, un service de l'époque en particulier a du mal à suivre avec le comportement moderne des joueurs.

Ce service, avec certaines améliorations depuis l'original, se charger de parties critiques des fonctionnalités du jeu, comme créer/rejoindre les parties, mettre à jour/lire/filtrer la liste des parties, vérifier la santé des serveurs de jeu, et lire les personnages depuis la base de données afin de s'assurer que votre personnage peut participer dans ce que vous filtrez. Plus important encore, ce service est un singleton, ce qui signifie que nous ne pouvons faire fonctionner qu'une instance de celui-ci afin de s'assurer que les joueurs voient la liste de parties la plus à jour et correcte à tout moment. Nous avons optimisé celui-ci de nombreuses façons afin de se conforter à une technologie plus moderne, mais comme nous l'avons mentionné précédemment, un grand nombre de nos problèmes viennent de la création de partie.

Nous mentionnons 'comportement moderne des joueurs' car c'est un point intéressant sur lequel réfléchir. En 2001, il n'y avait pas autant de contenu sur interne sur la façon dont jouer à Diablo II 'correctement' (Runs Baal pour l'XP, Pindleskin/Ancient Sewers/etc pour le Magic Find, etc.). Aujourd'hui, cependant, un nouveau joueur peut regarder un grand nombre de créateurs de contenu qui peuvent leur apprendre comment jouer au jeu de différentes façons, de nombreuses d'entre elles incluant beaucoup de charge de base de données sous forme de création, chargement et destruction de parties dans des successions rapides. Bien que nous nous attentions à cela - avec des joueurs créant de nouveaux personnages sur de nouveaux serveurs, travaillant ardemment afin d'obtenir leurs objets Magic Find - nous avons grandement sous-estimé l'ampleur que nous estimé du Beta test. 

De plus, globalement, nous sauvegardions trop souvent de la base de données globale. Il n'est pas utile de le faire aussi souvent que nous le faisions. Nous devrions vous sauvegarder dans la base de données régionale, et uniquement dans la base de données globale lorsque nous devons vous déverrouiller - c'est une des résolutions que nous avons mises en place. Actuellement, nous écrivons le code pour changer la façon dont nous faisons cela en intégralité, afin que nous ne sauvegardions presque jamais sur la base de données globale, ce qui réduira de manière significative le chargement sur ce serveur, mais c'est un redisign de l'architecture qui prendra un peu de temps à construire, tester et implémenter.

Un mot concernant la perte de progression

La perte de progression que certains joueurs ont vécu est due à la façon dont nous effectuons le verrouillage de personnage à la fois dans les bases de données régionales et globales - nous verrouillons votre personnage dans la base de données globale puis vous êtes assignés à une région (par exemple, lorsque vous jouez dans la région US, votre personnage est verrouillé à la région US, et la plupart des actions sont effectués par la base de données de la région US).

Le problème était que lors d'une panne serveur, lorsque la base de données tombe, un nombre de personnage se bloquaient dans la base de données régionale, et nous n'avions pas de façon de déplacer ces derniers vers la base de données globale. À cette période, nous pensions que nous avions deux options : soit nous débloquons tout le monde avec des changements non sauvegardés dans la base de données globale, perdant une partie de la progressions en raison de l'écrasement qui se produirait à la base de données globale, ou nous mettions le jeu hors ligne pour une période de temps indéterminée et lancions un script pour écrire la base de données régionale sur la base de données globale. 

À ce moment, nous avons choisi la première option : nous pensions qu'il était plus improtant de garder le jeu disponible afin que les joueurs puissent jouer, plutôt que de mettre le jeu hors ligne pendant une longue période de temps pour restaurer les données. Nous sommes profondément désolés pour les joueurs qui ont perdu une progression importante ou des objets précieux. En tant que joueurs nous-même, nous connaissons la piqure d'un rolback, et le ressentons profondément.

À l'avenir, nous pensons que nous avons une façon de restaurer les personnages qui ne mène pas à une perte importante des données - celle-ci devrait être limitée à une perte de quelques minutes, si elle existe, même dans le cas d'un crash serveur. 

C'est mieux, mais pas encore suffisant à nos yeux.

Ce que nous faisons à ce sujet

Limitation de débit : Nous limitons le nombre d'opération à la base de données concernant la création de parties et rejoindre ces dernières, et nous avons que cela impacte de nombreux d'entre vous. Par exemple, ceux d'entre vous qui effectuent des runs Pindleskin, vous serez à l'intérieur et en dehors d'une partie et en créerez une nouvelle dans les 20 secondes. Dans ce cas, vous serez limités à un certain moment. Lorsque cela se produit, un message d'erreur indiquera qu'il y a un problème dans la communication avec les serveurs de jeu : ce n'est pas un indicateur que les serveurs de jeu sont hors-ligne dans le cas présent, cela signifie que vous avez été limités pour réduire la charge temporairement sur la base de données, dans le but de garder le jeu en ligne. Nous vous assurons qu'il s'agit juste d'une solution temporaire - nous ne voyons pas cela comme une solution à long terme.

Création d'une file d'attente : Ce dernier weekend était une série de problèmes, pas le même problème encore et encore. En raison d'une base de joueur revitalisée, l'ajout de multiples plateformes et d'autres problèmes associés à l'ampleur, nous pourrions continuer de rencontrer de petits problèmes. Pour diagnostiquer et résoudre ces derniers rapidement, nous avons besoin d'être certains que le 'troupeau' - grand nombre de joueurs se connectant simultanément - s'arrête. Afin de résoudre ceci, nous avons des personnes qui travaillent sur une file d'attente, comme vous avez déjà pu le voir sur World of Warcraft. Cela gardera la population au niveau convenable que nous avons actuellement, afin que nous puisions contrôler où le système est surmener et résoudre le problème avant qu'il ne fasse tomber le jeu complètement. Chaque fois que nous résolvons un souci, nous seront en mesure d'augmenter la limite de population. Cette file d'attente a déjà été partiellement implémentée en coulisse (actuellement, celle-ci prend la forme d'un échec d'authentification dans le client) et devrait être pleinement déployée dans les prochains jours sur PC, avec les Consoles peu après.

Diviser des parties importantes des fonctionnalités dans des services plus petits : Ce travail est à la fois partiellement en cours pour des choses que nous pouvons faire en moins d'une journée (une partie a déjà été terminée cette semaine) et également prévue à plus long terme, comme de nouveaux micro-services (par exemple, un service GameList qui est uniquement responsable de donner la liste des parties aux joueurs). Une fois les fonctionnalités importantes auront été décomposées, nous pourrons examiner l'intensification des services de gestion de partie, ce qui réduira la charge.

Nous avons des personnes travaillant très dur sur la gestion des incidents en temps réel, diagnostiquant les problèmes et implémentant des solutions, pas uniquement l'équipe D2R, mais à travers Blizzard. Ce jeu signifie tellement pour chacun d'entre nous. Nombreux d'entre nous dans l'équipe sont des joueurs de Diablo 2 de longue date - nous y avons joué pendant le lancement initial en 2001, certains sont membres de la communauté des mods, etc. Nous pouvons vous assurer que nous continuerons de travailler jusqu'à ce que l'expérience de jeu nous semble bonne, pas uniquement en tant que développeurs, mais en tant que joueurs et membres de la communauté nous même.

Continuez à envoyer vos retours sur le forum de Diablo II : Resurrected, signalez les vos dans le forum Signalement de bugs, et pour de l'assistance, visitez le forum Support technique. Merci pour votre communication constante avec nous à travers les différents canaux - c'est important pour nous pendant que nous travaillons sur ces problèmes.

L'équipe communautaire de Diablo vous tiendra informé de notre progression via les forums. 

L'équipe de développement de Diablo II : Resurrected.

Tags : Diablo 2 Live
Source : Blizzard
23 commentaires - [Poster un commentaire]


Chargement des commentaires...

Poster un commentaire

Vous devez vous identifier pour poster un commentaire.
Nombre de visites sur l'accueil depuis la création du site Diablo II : 42.984.814 visites.
© Copyright 1998-2024 JudgeHype SRL. Reproduction totale ou partielle interdite sans l'autorisation de l'auteur. Politique de confidentialité.