2011-01-08 7 views
1

J'utilise Apache2 sur Ubuntu 9.10, et j'essaie de régler ma configuration pour une application web afin de réduire la latence des réponses aux requêtes HTTP.Comment mesurer le temps passé par les requêtes HTTP dans la file d'attente d'acceptation?

Lors d'une charge modérément lourde sur mon petit serveur, 24 processus apache2 traitent les demandes. Les demandes supplémentaires sont mises en file d'attente. En utilisant "netstat", je vois 24 connexions sont établies et 125 connexions sont TIME_WAIT. J'essaie de voir si cela est considéré comme un arriéré raisonnable.

La plupart des demandes sont traitées en une fraction de seconde, donc je suppose que les requêtes passent rapidement dans la file d'attente, probablement dans 1 ou 2 secondes, mais je voudrais être plus sûr.

Quelqu'un peut-il recommander un moyen facile de mesurer le temps qu'une requête HTTP se trouve dans la file d'attente d'acceptation?

Les suggestions que j'ai rencontrées jusqu'à présent semblent démarrer l'horloge après le travailleur apache2 accepte la connexion. J'essaie de quantifier le délai d'acceptation de la file d'attente avant cela.

merci à l'avance, David Jones

Répondre

0

Je ne sais pas si vous pouvez mesurer précisément le temps avant la connexion est acceptée, mais vous pouvez mesurer la latence et de la variabilité des temps de réponse (et qui est la partie qui compte vraiment) en utilisant l'outil ab fourni avec les utilitaires apache.

Il génèrera du trafic avec la simultanéité que vous configurez, puis réduira les temps de réponse et vous donnera un écart-type.

Server Hostname:  stackoverflow.com 
Document Length:  192529 bytes 
Concurrency Level:  3 
Time taken for tests: 48.769 seconds 
Complete requests:  100 
Failed requests:  44 
    (Connect: 0, Receive: 0, Length: 44, Exceptions: 0) 
Write errors:   0 
Total transferred:  19427481 bytes 
HTML transferred:  19400608 bytes 
Requests per second: 2.05 [#/sec] (mean) 
Time per request:  1463.078 [ms] (mean) 
Time per request:  487.693 [ms] (mean, across all concurrent requests) 
Transfer rate:   389.02 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  101 109 9.0 105  152 
Processing: 829 1336 488.0 1002 2246 
Waiting:  103 115 38.9 104  368 
Total:  939 1444 485.2 1112 2351 

Percentage of the requests served within a certain time (ms) 
    50% 1112 
    66% 1972 
    75% 1985 
    80% 1990 
    90% 2062 
    95% 2162 
    98% 2310 
    99% 2351 
100% 2351 (longest request) 

(SO n'a pas effectué particulièrement bien :)

L'autre chose que vous pouvez faire est de mettre l'horodatage de la demande dans la demande elle-même et comparer immédiatement lors de la manipulation de la demande. Si vous générez du trafic sur la même machine ou avez des horloges synchronisées, cela vous permettra de mesurer le temps de traitement des demandes.

Questions connexes