Un outil de surveillance externe vous indiquera que le temps de réponse moyen des 5 URL surveillées a doublé au cours des 30 dernières minutes. Le projet fonctionne sur un seul serveur physique qui n'est pas sous votre gestion et qui se trouve quelque part dans un centre de données. Vous vous connectez via SSH, lancez htop, et constatez que la charge du processeur est de 95% et que la mémoire déborde depuis longtemps.
Selon git, vous savez qu'il y a environ une semaine, ils ont effectué une migration de base de données vers une nouvelle structure de table, et un collègue écrit dans le chat qu'il a dû exécuter la migration pendant la nuit parce que le recalcul des colonnes et des index a pris environ 5 heures, pendant lesquelles presque toute la base de données était verrouillée, et ni INSERT ni SELECT ne fonctionnaient.
Les problèmes de performance sont donc probablement dus à des index mal conçus, à des requêtes SQL mal conçues ou à un pooling de connexions important. Il n'y a pas de temps pour un revert, il y a 7 mille utilisateurs sur le site selon Google Analytics, et une panne de 5 heures signifierait un risque de réputation pour le client, et une perte de dizaines à centaines de milliers de couronnes pendant ce temps (c'est difficile à estimer, les projectionnistes en font assez). Vous réalisez que tester uniquement les fonctionnalités sur un environnement de test n'est pas suffisant, et que vous devez également mettre en place un test de charge.
Comme il s'agit d'une importante boutique de commerce électronique de votre plus gros client et que vous vous attendez à ce que la situation s'aggrave, vous avez 30 secondes pour prendre une décision.
Comment procéder ?
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | fr