Résolution des lenteurs sur le jeu (et le chat)

Depuis un certains temps, vous etiez certainement nombreux à avoir constater que le jeu « bloquait » pendant plusieurs dizaines de secondes toutes les 10 minutes environ.

En team, nous en parlions également car nous n’étions évidemment pas épargné. Retour sur ce problème, résolu depuis hier 21 heures.

Avant tout, j’ai commencé à regarder les statistiques « système » du serveur. Utilisation du processeur, de la mémoire, etc. Je vous fourni ici quelques uns des graphiques que génèrent Munin, logiciel de monitoring de serveur.

En regardant les statistiques des derniers mois, je ne constate rien d’inhabituel de ce côté là. Certes peu mieux faire, mais le serveur n’est largement pas sous-dimensionné pour l’utilisation qu’on en a. Alors où est le problème ? Le problème se situe souvent, même très souvent, entre l’écran et la chaise devant le bureau… Donc du côté des développeurs.

Le code source du jeu côté serveur (PHP) étant éprouvé, il y a peu de chances que cela provienne de là. Il faut donc se tourner vers la base de données (MySQL). La première des choses à faire est de partir à la recherche des requêtes dites « lentes » (slow querys). Pour les repérer, il faut activer leur enregistrement dans un fichier. Et… Bingo !

Query_time: 52.115554 Lock_time: 0.008404 Rows_sent: 0 Rows_examined: 60047143

En gros, la requête qui m’est présentée prend 52 secondes (au lieu de moins d’une seconde pour des requêtes dans la norme). La cause est elle aussi indiquée. La requête à du parcourir pas moins de 60 047 143 enregistrements ! Complètement dingue. Et là, c’est clairement de notre faute.bug

La requête concernée vise à la suppression des salons inutilisés du chat. Elle était vraiment mal fichue et du coup chaque message du chat était analysée pour chaque salon existant… Autrement dit, chaque message posté sur le chat augmentait le temps nécessaire pour que la requête se fasse ! Et cette requête était appelée toutes les… 10 minutes.

Le problème étant corrigé, cette source de lenteur extrême récurrente appartient désormais au passé.

Bon jeu à tous.

James

A propos de James

Je suis le fondateur et le développeur principal du jeu monpompier.com. J'ai 31 ans et suis Adjudant SPV dans le 67. Passionné naturellement d'informatique, mon objectif est de créer une véritable communauté autour de ce magnifique métier de Sapeur Pompier.

rem59210

Merci pour la résolution de ce beug, il est vrai que ce n’était pas très pratique. Au passage merci pour ce petit cours d’informatique 🙂