#20817 - Note : panne site d’hier
https://lehollandaisvolant.net/?mode=links&id=20220218084814Plop !
La panne du site d’hier est corrigée !
C’est un module MySQL qui a planté et à provoqué une charge anormale si le site (saturation mémoire + swap, entre autre).
Même si je ne n’utilise pas du tout MySQL (uniquement SQLite), s’agissant d’un serveur en mutualisé, MySQL a dû planter sur un des sites et ce sont tous les sites qui tombent en cascade ensuite.
Le truc c’est que chaque visiteur qui arrive sur le site arrive dans une sorte de file d’attente. Si l’attente est moins longue que le temps de traitement de sa requête (généralement quelques millisecondes), tout va bien : la file n’a pas le temps de se former.
Mais il suffit qu’une requête d’une personne prenne un peu de temps pour que les personnes qui arrivent ensuite attendent et forment une file (et y un visiteur toutes les quelques secondes ici). Or la gestion de cette file coûte également chère en ressources, d’autant plus que généralement quand ça répond pas, le navigateur ou l’internaute se met à bourriner sur la toucher "recharger", aggravant le problème.
Une façon de gérer serait de déprioriser les requêtes lourdes et de laisser passer les gens avec des requêtes rapides : comme ça seulement une personne attend, mais les autres passent normalement. Alors que si on traite les requêtes par heure d’arriver, t’en as un qui bloque et agace tout le monde et la queue n’en finit pas de grandir et subsiste même une fois le client chiant servi depuis longtemps (c’est généralement ce qui se passe à LaPoste ou au supermarché).
Ce genre de gestion est utilisé sur les gros sites, où les arrivants sont triés par un serveur de tri puis renvoyé sur un autre serveur approprié pour sa requête.
Du coup les gens avec les requêtes simples sont toujours servis rapidement, mais ceux avec des requêtes compliquées vont attendre (normal, si la requête est compliquée).
Mais sur des petits sites, ça ne se passe pas comme ça. Il faut donc faire gaffe à ses scripts.
L’an dernier j’avais le problème où une requête buguée ressortait tous les articles du site (1200+) en une page HTML. Un petit malin a dû s’en apercevoir car tous les jours des dizaines de requêtes sur cette URL étaient faites très rapidement et plantant le serveur à chaque fois. Depuis, j’ai débugué le script et j’ai bloqué des IP et il n’y a plus aucun soucis. J’ai aussi banni tout un tas de robots spammeurs de requêtes.
Le bug d’hier est un plantage plus ou moins aléatoire comme ça arrive tout le temps et partout.
Mon hébergeur a pu corriger le soucis hier soir très tard, merci à eux pour l’efficacité et la correction du soucis !