Annuel Payez à l'année et profitez de 2 mois offerts sur chaque offre payante. Voir les offres
Se connecter Commencer gratuitement

Trois pages par seconde

Le matin du 22 septembre, torun.ai s'est mis à ramper. Une ferme de navigateurs automatisés, plus de deux mille adresses en trois quarts d'heure, demandait nos pages publiques une par une, et à la pire minute cela faisai…

Le matin du 22 septembre, torun.ai s'est mis à ramper. Une ferme de navigateurs automatisés, plus de deux mille adresses en trois quarts d'heure, demandait nos pages publiques une par une, et à la pire minute cela faisait environ trois pages par seconde. Un site web devrait encaisser cela sans broncher. Le nôtre non : dans la tranche la plus chargée, plus d'un quart des requêtes ont pris plus de trente secondes, et des centaines de visiteurs ont abandonné avant l'arrivée de la page.

Pas la charge que nous imaginions

Les suspects évidents étaient le robot et le processeur. Aucun n'a tenu. En rejouant les mêmes trois pages par seconde sur une copie du site, celui-ci a tenu moins d'une minute, puis n'a plus rien terminé du tout. L'utilisation du processeur est tombée de 60 % à 1 % pendant que le nombre de threads passait de 12 à 166. Un serveur surchargé travaille davantage ; celui-ci attendait.

Un aller-retour pour chaque mot

Observer le serveur de cache pendant une seule page a montré ce qu'il attendait. Une page lui envoyait 585 commandes, dont 428 étaient une même requête et son rafraîchissement, répétés : une table de traductions qui, pour notre site, est vide. Chaque texte traduit de la page, et une page en compte des centaines, la redemandait, et chaque demande bloquait un thread jusqu'au retour de la réponse. À trois pages par seconde, les threads se sont épuisés, et tout a fait la queue derrière.

La correction, et une limite

Ces requêtes sont désormais servies depuis la mémoire pendant une minute à chaque fois, rechargées une seule fois à expiration et effacées sur le serveur qui modifie une traduction. La même page envoie maintenant 31 commandes au lieu de 585. Nous avons aussi placé une limite devant la génération des pages : un nombre fixe de pages est généré à la fois, une courte file attend, et tout ce qui dépasse reçoit aussitôt un « réessayez dans un instant » au lieu de ralentir toutes les pages.

Mesuré en production

Après la mise en production du 23 septembre, nous avons de nouveau mesuré le site en ligne. La page médiane se génère en 42 millisecondes, contre 249, et la plus lente sur vingt en 72 millisecondes, contre presque deux secondes. La requête exécutée 214 fois par page ne l'est plus qu'une fois.

La leçon que nous avons notée est simple : un chiffre de capacité est une mesure, pas une croyance. Nous n'avions jamais testé ce que le site public pouvait encaisser. C'est fait, et nous testerons de nouveau avant d'avancer un chiffre.

Partager LinkedIn X E-mail
Essayez-le sur votre propre travailChaque réponse affiche ce qu'elle a coûté. Commencez avec le forfait gratuit. Commencer gratuitement
Des nouveautés produit, pas du bruit Nouveaux modèles, fonctionnalités et temps forts du changelog - un court e-mail quand quelque chose sort vraiment.
En vous abonnant, vous acceptez de recevoir les e-mails de ToRun sur les nouveautés du produit. Vous pouvez vous désabonner à tout moment. Politique de confidentialité