web-dev-qa-db-fra.com

Load Testing with AB ... fausses demandes ayant échoué (longueur)

Pour faire quelques tests de charge, pour ma propre curiosité, sur mon serveur, j'ai exécuté:

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

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

Dans mes résultats, j'obtiens:

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 demandes "échouées" 32951. Je ne peux pas comprendre cela.

Pendant le déroulement du test, j’ai pu accéder à mon site Web à partir de mon ordinateur personnel à la perfection, bien que les temps de chargement des pages au bas de la page aient été signalés comme étant 0,5 au lieu des 0,02 habituels. Cependant, je n'ai jamais eu une demande échouée.

Alors, pourquoi AB signale-t-il que la moitié des connexions échouent? Et que signifie "Longueur:" dans ce contexte?

Merci

201
Franky

Ça ne fait rien. L '"erreur de longueur" indique simplement qu'environ la moitié du temps, la longueur de la réponse était différente.

Étant donné que le contenu est dynamique, il s'agit probablement de l'identifiant de session ou de quelque chose comme ça.

351
Franky

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

L'outil d'analyse 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 réponses suivantes a une longueur de contenu différente, cela entraîne des "échecs de longueur".

Suite au rapport de bogue Apache semble confirmer que: ASF Bug 4204

Résumé : Si vous diffusez un contenu de longueur variable, vous devriez probablement ignorer ce type d'échecs de demandes d'ab.

Edit : J'ai récemment remarqué que la commande ab avait 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 <$ Révision: 1528965 $> mais ne peut pas le voir dans ab Version 2.3 <$ Révision: 655654 $> , donc il a probablement été ajouté relativement récemment.

122
Dariusz Walczak

Désolé de retrouver une vieille question, mais c’est la première qui est apparue dans Google. Parfois, l'erreur de longueur signalée par ab peut avoir été provoquée par un problème réel: si la connexion est fermée côté serveur, le client n'a pas reçu la quantité totale d'octets déclarée dans l'en-tête Content-Length. Cela peut arriver s'il y a d'autres parties entre le client et le serveur, par exemple des équilibreurs de charge naïfs à la main (mon cas).

8
zentrunix