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 demandes d'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 32951 demandes "échouées". Je ne peux pas comprendre cela.
Pendant que le test était en cours, j'ai pu accéder parfaitement à mon site Web à partir de mon ordinateur à la maison, bien que les temps de chargement des pages au bas de la page aient été signalés comme 0,5 au lieu de 0,02 habituel. Cependant, je n'ai jamais eu une seule fois échoué.
Alors pourquoi AB signale-t-il que la moitié des connexions échouent? Et que signifie "Longueur:" dans ce contexte?
benchmarking
load-testing
apachebench
Benjamin
la source
la source
Réponses:
Ça ne fait rien. L '"échec de longueur" indique simplement qu'environ la moitié du temps, la longueur de la réponse était différente.
Puisque le contenu est dynamique, c'est probablement l'identifiant de session ou quelque chose comme ça.
la source
Pour décrire le problème en d'autres termes:
L'outil d'analyse comparative d'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, elle entraîne des «échecs de longueur».
Le rapport de bogue apache suivant semble confirmer que: bogue ASF 42040
Résumé : Si vous diffusez un contenu de longueur variable, vous devez probablement ignorer ce type d'échecs de demande d'ab.
Edit : J'ai récemment remarqué que la
ab
commande a une nouvelle option (au moins pour moi):Je peux le voir dans une version 2.3 <$ Revision: 1528965 $> mais je ne peux pas le voir dans une version 2.3 <$ Revision: 655654 $> , donc il a probablement été ajouté relativement récemment.
la source
Désolé de ressusciter une vieille 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 artisanaux naïfs (mon cas).
la source