Devblog : Problèmes de connexion

Le dernier billet du devblog vient répondre à toutes nos interrogations sur les problèmes de connexion qui touchent les serveurs depuis quelques temps. Bill nous explique d'où provient le bug, les effets néfastes sur les connexions et les mesures installées pour contrer le souci. Toujours dans l'optique d'améliorer les performances, il nous parle aussi des projets en cours pour alléger les serveurs.

L'intégralité du billet du devblog :

Bonjour,

Depuis quelques jours/semaines, aux heures d'affluence (fin de journée, weekend) la connexion au jeu devient très fastidieuse. Nous sommes conscients du problème et nous travaillons à l'amélioration de cette situation.

Nous avons pu repérer un bug qui, en période de forte affluence, provoquait une grande probabilité que la connexion du joueur n'aboutisse pas. Lors de la connexion, le jeu affichait alors fréquemment « le serveur met trop de temps à répondre, patienter/interrompre ».

Nous avons passé plusieurs semaines à explorer des pistes afin de localiser le problème, qui pouvait potentiellement se trouver sur de nombreux points de l'architecture (matériel, firewall, réseau, client flash, serveur...).

Ce bug se situant au niveau du moteur réseau des serveurs a été relativement long à déceler, mais existait depuis les premières versions de Dofus 2.0. Ce n'est que dernièrement, avec la hausse de la sollicitation de l'architecture de connexion (notamment, par de nombreux bots relativement mal programmés, puisque provoquant un impact écrasant sur les performances des serveurs, avec des centaines de déconnexions/reconnexions par minute pour certains) que ce problème s'est révélé au grand jour. Nous avons mis en ligne vendredi 19/11 un correctif qui corrige ce problème.

Suite à ce correctif, l'ensemble des connexions des joueurs aboutissent normalement à la connexion du compte. De nombreuses files d'attente ont été générées vendredi en début de soirée, suite à ce correctif, car l'ensemble des joueurs mais aussi des bots ont pu se connecter sans éprouver ce bug. Nous avons du surveiller l'ensemble de l'architecture et blacklister de nombreuses plages IP d'où provenaient des connexions abusives (bots, flood des serveurs...) tout au long de la soirée pour retrouver une situation normale vers 21h30. Pour information, c'est plus de 143000 IP qui ont été ainsi bloquées.

Samedi le problème s'est reproduit à 3 reprises dans la journée. Plus complexe cette fois, puisque les connexions trop nombreuses ont provoqué le crash complet de la connexion au jeu, et notre équipe d'astreinte ainsi que nos prestataires ont du relancer à plusieurs reprises les serveurs. Nous avons pu néanmoins mettre en place une série de vérifications afin d'éviter les blocages de longue durée.

Pour cela, l'architecture de connexion, lors d'un afflux anormal de connexions de joueurs, se bloque quelques dizaines de secondes le temps de traiter les connexions en cours. Voilà le principe de base : plus on a de connexions entrantes, plus l'architecture peine à les traiter, donc plus les connexions s'empilent, et ce phénomène empire. Afin d'éviter cette dégradation, désormais lorsque trop de connexions sont en cours, le serveur se bloque, ainsi il traite les connexions actives plus efficacement, puis la connexion rouvre et accepte de nouveaux joueurs. Le blocage peut donc se répéter plusieurs fois le temps de traiter toutes les demandes. Si lors de votre connexion vous obtenez le message « Serveur en maintenance », vous pouvez attendre 30 secondes puis tenter de vous reconnecter. Nous prévoyons prochainement que cette fonction d'attente soit intégrée au jeu, ainsi vous n'aurez plus qu'à patienter quelques secondes et la connexion se fera de façon automatique. Le message sera également différencié entre cette phase « bloquée » et les réelles maintenances programmées.

Nous travaillons également de façon continue sur plusieurs choses, chacune apportant une amélioration des performances :

- Les performances des bases de données et des serveurs
Afin de permettre à toujours plus de joueurs d'accéder au jeu, l'ensemble de l'architecture, matérielle comme logicielle, évolue régulièrement.

- La parallélisation des serveurs
Le but est de dissocier les différentes tâches effectuées sur différents serveurs, afin d'avoir des serveurs les plus légers possibles, donc plus rapides. Certaines tâches invisibles pour les utilisateurs sont effectuées par les mêmes serveurs, en dissociant ces tâches et en les répartissant sur d'autres serveurs nous allons alléger les phases d'accès au jeu.

- L'optimisation du code serveur
Afin de réduire la consommation mémoire, les fuites potentielles, et d'améliorer les performances des serveurs, les développeurs reprennent régulièrement des parties des programmes serveurs. En améliorant les performances et la stabilité du code, les serveurs seront plus stables, plus réactifs, et nécessiteront moins de maintenances.

- La lutte contre les bots
Après une période d'accalmie (le temps de s'adapter) avec la sortie de la 2.0, de nombreux bots sont revenus sur le jeu. Si les bots sont en général bannis et expulsés dans les quelques heures suivant leur création, leur comportement surcharge les serveurs. Nous voyons par exemple certains bots qui tentent des milliers de connexions par minute (pour un seul compte), bien que le compte soit banni, le bot continue de tenter la connexion, et à chaque fois le serveur doit traiter ce refus. Lorsque ce phénomène se multiplie par un grand nombre de bots, la charge du serveur devient trop grande et les performances du serveur sont dégradées. Pour cela, la parallélisation va permettre de traiter plus de demandes en même temps, mais nous travaillons aussi à bloquer plus rapidement les IP à l'origine de ces surcharges afin d'alléger les serveurs.

Source : http://devblog.dofus.com/fr/billets/122-problemes-connexion.html

Réactions (11)

Afficher sur le forum

  • En chargement...