Blizzard révèle la source de Diablo II: problèmes de serveur ressuscité

Une silhouette squelettique dans un châle rouge avec des yeux rouges brillants et un trou sur le front regarde froidement le spectateur.

Image : Blizzard

Diablo 2: Resurrected a été lancé, c’est authentique comme l’enfer, mais ensuite les serveurs D2 ont fait un voyage instantané vers le septième cercle. Au cours de la dernière semaine, les joueurs ont été confrontés à des problèmes de connexion et à des pannes constants. Et d’après le bruit des choses, les pauvres ingénieurs serveurs doivent absolument détester la vie.

Tout d’abord : chaque fois qu’un développeur publie un blog qui dépasse les 2 000 mots, vous savez que la merde a vraiment touché le fan. C’est une explication massive sur tous les problèmes auxquels sont confrontés Diablo 2: les joueurs ressuscités ces derniers temps, et c’est si vaste parce que les problèmes ne sont pas causés par un seul problème mais par un mélange, allant d’une incapacité à gérer la popularité du jeu, son architecture et jusqu’au fait que les joueurs sont bien plus efficaces pour écraser Diablo dans la poussière en 2021.

Le premier problème majeur souligné par l’équipe est la façon dont les personnages et les données des joueurs sont stockés. Si vous avez joué à un jeu multijoueur Activision ou Blizzard au cours des dernières décennies, vous saurez que vous vous connectez généralement à un ensemble de serveurs aussi proches de votre emplacement que possible. Ce n’est pas un serveur individuel en soi, mais un cluster de serveurs qui desservent une région entière.

Quoi qu’il en soit, ces serveurs ont tous leurs propres bases de données régionales qui stockent les données des personnages qui y jouent. Cela est nécessaire car il y a trop de gens qui jouent à Diablo 2 pour simplement télécharger continuellement les données de tout le monde vers un seul point central.

« La plupart de vos actions dans le jeu sont effectuées sur cette base de données régionale car elle est plus rapide et votre personnage y est « verrouillé » pour maintenir l’intégrité de l’enregistrement de chaque personnage. La base de données mondiale dispose également d’une sauvegarde en cas de défaillance de la principale », a écrit Blizzard.

G/O Media peut toucher une commission

Xbox série S

Il est actuellement disponible
Obtenez une console de nouvelle génération pour jouer exclusivement à des jeux numériques en 1440p.

Ces bases de données régionales renvoient périodiquement des informations à la base de données centrale, de sorte que Blizzard dispose d’un enregistrement unique (avec des sauvegardes) de vos barbares, nécromanciens, etc. de niveau 88. Ce qui semble très bien, jusqu’à ce que cette base de données centrale soit surchargée et que l’ensemble du système, tout comme les ingénieurs qui y travaillent, ait besoin d’une sieste.

« Le samedi matin, heure du Pacifique, nous avons subi une panne mondiale en raison d’une augmentation soudaine et importante du trafic. C’était un nouveau seuil que nos serveurs n’avaient pas du tout connu, même pas au lancement », a expliqué Blizzard.

Cela a été exacerbé par une mise à jour que nous avions déployée la veille et destinée à améliorer les performances autour de la création de jeux – ces deux facteurs combinés ont surchargé notre base de données mondiale, provoquant son expiration. Nous avons décidé d’annuler cette mise à jour du vendredi que nous avions précédemment déployée, en espérant que cela allégerait la charge sur les serveurs avant dimanche tout en nous donnant également l’espace pour enquêter plus en profondeur sur la cause première.

Dimanche, cependant, il est devenu clair que ce que nous avions fait samedi n’était pas suffisant – nous avons constaté une augmentation encore plus importante du trafic, ce qui nous a fait subir une autre panne. Nos serveurs de jeu observaient la déconnexion de la base de données et tentaient immédiatement de se reconnecter, à plusieurs reprises, ce qui signifiait que la base de données n’avait jamais eu le temps de rattraper le travail que nous avions effectué car elle était trop occupée à gérer un flux continu de tentatives de connexion par les serveurs de jeu. Pendant ce temps, nous avons également vu que nous pouvions apporter des améliorations à la configuration de la journalisation des événements de notre base de données, ce qui est nécessaire pour restaurer un état sain en cas de défaillance de la base de données.

Pas exactement la recette d’un week-end amusant, ça. Cela explique également pourquoi les joueurs avaient aussi tant de problèmes avec la progression. Vous choisiriez votre personnage, commenceriez une partie, joueriez pendant un certain temps, mais le serveur régional ne pouvait pas communiquer avec la base de données centrale après une panne. Il ne pouvait donc pas dire à la source de « vérité sur le terrain » de Diablo 2 sur le nouvel équipement et l’XP que vous aviez gagnés, ce qui a entraîné des joueurs frustrés qui ont perdu une partie des progrès qu’ils avaient réalisés.

Les problèmes n’ont fait qu’empirer à partir de là. Les serveurs de Diablo 2 sont revenus en ligne, mais ils l’ont fait pendant une période où la plupart des joueurs étaient en ligne. Ainsi, même si les serveurs ont rebondi rapidement, ils ont planté presque immédiatement dès que des centaines de milliers d’instances de Diablo 2 ont démarré.

Et si le week-end a été mauvais, ce qui a suivi lundi et mardi n’a pas été mieux :

Cela nous amène au lundi 11 octobre, lorsque nous avons effectué le basculement entre les bases de données mondiales. Cela a conduit à une autre panne, lorsque notre base de données de sauvegarde continuait par erreur à exécuter son processus de sauvegarde, ce qui signifie qu’elle passait le plus clair de son temps à essayer de copier à partir de l’autre base de données alors qu’elle aurait dû répondre aux demandes des serveurs. Pendant ce temps, nous avons découvert d’autres problèmes et nous avons apporté d’autres améliorations : nous avons trouvé une requête obsolète mais taxante que nous pouvions éliminer entièrement de la base de données, nous avons optimisé les vérifications d’éligibilité pour les joueurs lorsqu’ils rejoignent une partie, allégeant davantage la charge , et nous avons d’autres améliorations des performances dans les tests en ce moment même. Nous pensons également avoir corrigé les tempêtes de reconnexion à la base de données que nous voyions, car nous ne l’avons pas vue se produire mardi.

C’est à ce moment-là que j’entends sans cesse le conseil de mon frère dans ma tête : « Ne vous lancez jamais dans le réseautage. »

D’une manière ou d’une autre, Diablo 2 n’en avait pas assez. Le jeu a connu ses meilleurs records pour les joueurs simultanés le mercredi, heure australienne, après près d’une semaine de problèmes de connexion et de plantages constants. Blizzard dit qu’il y avait « quelques centaines de milliers de joueurs dans une seule région », ce qui pourrait être beaucoup ou relativement standard, selon la façon dont les serveurs de Blizzard définissent les régions. (Quelques centaines de milliers seraient extrêmement impressionnants pour, disons, l’Australie. Pour une « région » comme les États-Unis, pas tellement, mais si cette région était une petite partie des États-Unis, alors peut-être qu’elle le serait. Le blog le message ne précise pas ici.)

Une figurine se dresse dans une étoile de flammes brûlante dans une image de gameplay de Diablo II: Resurrected.

Capture d’écran : Kotaku Australie / Blizzard Entertainment

Selon les développeurs, l’un des plus gros problèmes à l’origine de tout cela est la façon dont le Diablo 2 d’origine gère les éléments essentiels du comportement des joueurs. Alors que Vicarious Visions a mis à jour le code D2 d’origine là où ils le pouvaient, une grande partie du projet gardait le code qui fonctionnait.

Ce qui était bien, jusqu’au point où il n’a plus commencé à évoluer.

Diablo 2 a une manière particulière d’extraire les données de la base de données centrale pour s’assurer que les joueurs peuvent faire ce qu’ils veulent faire. Rejoindre un jeu ? Cela rappelle la base de données centrale. Vous voulez changer de personnage ? C’est une autre vérification de la commande centrale pour s’assurer que vous obtenez le personnage que vous avez demandé, à l’endroit où vous l’avez laissé, avec tout l’équipement pour lequel vous avez travaillé.

Diablo 2, selon l’équipe, a été conçu pour être centralisé. L’inconvénient de cela signifie qu’une seule instance de ce service particulier peut être exécutée à la fois, de sorte qu’ils ne peuvent pas décharger une partie du poids sur les serveurs régionaux.

« Il est important de noter que ce service est un singleton, ce qui signifie que nous ne pouvons en exécuter qu’une seule afin de garantir que tous les joueurs voient à tout moment la liste de jeux la plus à jour et la plus correcte », ont écrit les développeurs. « Nous avons optimisé ce service de plusieurs manières pour nous conformer à une technologie plus moderne, mais comme nous l’avons mentionné précédemment, beaucoup de nos problèmes découlent de la création de jeux. »

Pour l’instant, il existe une gamme de solutions et de feuilles de route à court terme pour réécrire l’architecture de Diablo 2 afin qu’elle puisse mieux s’adapter à la demande moderne. Le service qui fournit simplement une liste de jeux aux joueurs, par exemple, est en train d’être divisé en un service à part entière.

Les développeurs introduiront également une file d’attente de connexion, à l’instar de World of Warcraft, pour éviter les situations de surcharge des serveurs lorsque des centaines de milliers d’instances de jeu sont lancées en même temps :

Pour résoudre ce problème, nous avons des personnes qui travaillent sur une file d’attente de connexion, un peu comme vous l’avez peut-être connu dans World of Warcraft. Cela maintiendra la population au niveau de sécurité que nous avons à l’époque, afin que nous puissions surveiller où le système est mis à rude épreuve et y remédier avant qu’il n’arrête complètement le jeu. Chaque fois que nous réparons une souche, nous pourrons augmenter les plafonds de population. Cette file d’attente de connexion a déjà été partiellement implémentée sur le backend (en ce moment, cela ressemble à un échec d’authentification dans le client) et devrait être entièrement déployée dans les prochains jours sur PC, avec une console à suivre.

Les joueurs seront également limités en taux, mais uniquement dans les cas où les jeux sont créés, fermés et recréés dans de courts laps de temps, ce qui est principalement le cas où les joueurs cultivent des zones comme Shenk & Eldritch ou Pindleskin. « Lorsque cela se produit, le message d’erreur indiquera qu’il y a un problème de communication avec les serveurs de jeu : ce n’est pas un indicateur que les serveurs de jeu sont en panne dans ce cas particulier, cela signifie simplement que vous avez été limité en termes de taux pour réduire temporairement la charge sur la base de données, dans l’intérêt de garder le jeu en marche », a conseillé Blizzard.

Pour être honnête, tout cela ressemble à un cauchemar absolu, et je pense aux ingénieurs qui ont devant eux ce qui ressemble à des mois de correctifs rétroactifs. Il y a une école de pensée sur Internet qui dit, eh bien, Blizzard aurait dû voir cela venir et le planifier. Mais cela fait aussi fondamentalement partie du risque que vous prenez avec les remasters. Ces jeux ont été écrits à une époque où les informations et les services multijoueurs n’avaient pas la popularité ou la facilité d’accès que nous avons aujourd’hui, et il est difficile de savoir si une grande partie de cette ancienne infrastructure évolue comme nous le pensons. Parfois, c’est le cas, jusqu’au point où tout s’effondre en un tas enflammé.

Cet article a été initialement publié sur Kotaku Australia.

Share