web-dev-qa-db-fra.com

Apache AB: S'il vous plaît expliquer la sortie

J'ai regardé autour de moi et je ne trouve aucune explication détaillée de la production. La plupart sont en effet faciles à comprendre, mais il y a une partie qui me frappe:

Time per request:       109537.505 [ms] (mean)
Time per request:       109.538 [ms] (mean, across all concurrent requests)

Cela signifie - pour moi - que si vous mesurez toutes les demandes simultanées (tout ce que cela signifie), les demandes sont soudainement retournées 100 fois plus rapidement. Pourquoi le temps par demande changerait-il beaucoup? Cela n'a aucun sens.

Existe-t-il une explication détaillée de cette partie et d'autres parties de la sortie AB?

31
Mei

Si vous avez la concurrence définie à 1, il n'y a pas de différence entre ces deux. Cela commence à la matière lorsque vous avez plus de 1 demande effectuée simultanément.

Regardons un exemple de ce que je reçois sur mon localhost:

ab -c 1 -n 1000 http://localhost/

va donner:

Time taken for tests:   3.912 seconds
Time per request:       3.912 [ms] (mean)
Time per request:       3.912 [ms] (mean, across all concurrent requests)

Cela signifie que 3,912 secondes étaient nécessaires pour effectuer 1000 demandes une par une. Donc, une seule demande requise 3.912 secondes/1000 = 3.912 ms en moyenne.

Maintenant, mettons un peu le niveau de concurrence:

ab -c 10 -n 1000 http://localhost/

Time taken for tests:   0.730 seconds
Time per request:       7.303 [ms] (mean)
Time per request:       0.730 [ms] (mean, across all concurrent requests)

Cette fois au lieu de 3,912 secondes, nous n'avons besoin que de 0,730 secondes pour obtenir le travail. Nous avons effectué 1000 demandes en 0,730 secondes, une demande prendrait en moyenne 0,730 secondes/1000 = 0,730 ms (dernière ligne). Mais la situation est un peu différente, car nous effectuons actuellement 10 demandes simultanément. Donc, en fait notre numéro ici ne reflète pas le temps réel qu'il faut pour une demande de remplir. 0,730 ms * 10 (nombre de demandes simultanées) = 7,303 ms. C'est le temps qu'il faut en moyenne pour une seule demande de remplir s'il a été exécuté non simultanément (ou plus correctement, de manière isolée au niveau de la concurrence actuelle).

Le dernier numéro que vous voyez (0,730 ms) est utilisé pour raconter approximativement à quel point le temps total augmenterait si vous avez ajouté 1 demande (-n 1001) Utilisation du niveau de concurrence actuel -c 10 (Bien au moins théoriquement, c'est tellement).

La MS 7h303 vous donne une vue d'ensemble de la longue répartition d'une seule demande isolée.

Le changement que vous voyez entre l'exemple -c 1 et -c 10:

[-c 1 ]: Time per request:       3.912 [ms] (mean)
[-c 10]: Time per request:       7.303 [ms] (mean)

signifie qu'une seule demande fonctionne plus vite si elle est la seule étant exécutée -c 1. S'il y a plusieurs demandes -c 10 En concurrence pour les ressources, une demande unique prendra plus de temps à compléter. Mais si vous prenez en compte le fait que vous effectuez 10 demandes de telles demandes simultanément, dans cette section 7.303, vous faites face à 10 demandes au lieu de 1.

Ainsi, en tant que mesure du délai pour une demande unique - La MS 7h303 est plus utile. Mais comme mesure de la performance - 0,730 ms est plus significatif. En fait, 0,730 ms <3,912 ms, vous voyez que vous serez en mesure de servir plus de demandes par seconde sur agrégat si vous autorisez 10 demandes simultanées.

53
Karol J. Piczak