Test de charge avec AB… fausses demandes ayant échoué (longueur)

Pour faire des tests de charge, pour ma propre curiosité, sur mon serveur j’ai couru:

ab -kc 50 -t 200 http://localhost/index.php 

Cela ouvre 50 connexions persistantes pendant 200 secondes et claque simplement mon serveur avec des requêtes pour index.php

Dans mes résultats, je reçois:

 Concurrency Level: 50 Time taken for tests: 200.007 seconds Complete requests: 33106 Failed requests: 32951 (Connect: 0, Receive: 0, Length: 32951, Exceptions: 0) Write errors: 0 Keep-Alive requests: 0 Total transferred: 1948268960 bytes HTML transferred: 1938001392 bytes Requests per second: 165.52 [#/sec] (mean) Time per request: 302.071 [ms] (mean) Time per request: 6.041 [ms] (mean, across all concurrent requests) Transfer rate: 9512.69 [Kbytes/sec] received 

Notez les 32951 requêtes “échouées”. Je ne peux pas comprendre cela.

Comme le test était en cours d’exécution, j’ai pu accéder parfaitement à mon site Web à partir de mon ordinateur personnel, même si les temps de chargement des pages en bas de la page étaient de 0,5 au lieu des 0,02 habituels. Cependant, je n’ai jamais eu une demande ratée.

Alors pourquoi AB signale-t-elle que la moitié des connexions échouent? Et que signifie “Longueur:” dans ce contexte?

Merci

Ça ne fait rien. L’échec de la longueur indique simplement qu’environ la moitié du temps, la durée de la réponse était différente.

Comme le contenu est dynamic, c’est probablement l’identifiant de session ou quelque chose comme ça.

Pour décrire le problème en d’autres termes:

L’outil d’parsing comparative apache (ab) suppose que la longueur du contenu de la réponse sera la même pendant tout le test. Il stocke la longueur du contenu de la première réponse. Si l’une des autres réponses a une longueur de contenu différente, cela entraîne des “échecs de longueur”.

Le rapport de bogue apache suivant semble confirmer que: ASF Bug 42040

Résumé : Si vous diffusez un contenu de longueur variable, vous devriez probablement ignorer ce type d’échec de demande d’ab.

Edit : J’ai récemment remarqué que la commande ab a une nouvelle option (du moins pour moi):

 -l Accept variable document length (use this for dynamic pages) 

Je peux le voir dans ab Version 2.3 <$ Revision: 1528965 $> mais je ne le vois pas dans ab Version 2.3 <$ Revision: 655654 $> , donc il a probablement été ajouté relativement récemment.

Désolé de ressusciter une ancienne question, mais c’était la première qui apparaissait dans Google. Parfois, l’erreur de longueur signalée par ab peut être due à un problème réel: si la connexion est fermée côté serveur avant que le nombre total d’octets déclarés dans l’en-tête Content-Length n’ait été reçu par le client. Cela peut se produire s’il y a d’autres parties entre le client et le serveur, par exemple, des équilibreurs de charge naïfs fabriqués à la main (mon cas).