2009-02-23 11 views
179

di fare qualche test di carico, per la mia curiosità, sul mio server mi sono imbattuto:Load Testing con AB ... finte richieste falliti (lunghezza)

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

Questo apre 50 connessioni keep-alive per 200 secondi e solo sbatte il mio server con richieste di index.php

Nei miei risultati, ottengo:

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 

Nota il 32951 "fallito" richieste. Non riesco a capirlo.

Mentre il test è stato in funzione, sono stato in grado di accedere al mio sito web dal mio computer di casa perfetta, anche se i tempi di caricamento di pagina in fondo alla pagina sono stati segnalati come 0,5 invece del solito .02. Tuttavia non ho mai avuto una volta una richiesta fallita.

Quindi, perché AB segnala che metà delle connessioni fallisce? E cosa significa "Lunghezza:" in questo contesto?

Grazie

+0

Il tuo sito web ha un bilanciamento del carico? Vedi il mio post sul blog [load testing with load balancers] (http://blog.browsermob.com/2009/02/tips-for-testing-with-load-balancers/) che potrebbe spiegare "funziona per me" situazione nella prova di carico. –

risposta

312

Nevermind. La "mancanza di lunghezza" indica semplicemente che circa la metà delle volte la durata della risposta era diversa.

Poiché i contenuti sono dinamici, è probabilmente l'identificativo di sessione o qualcosa del genere.

+6

Ehi, ho appena incontrato lo stesso "problema" e sono contento che questa risposta fosse qui. Grazie! –

+1

Anch'io! Non possono chiamarlo qualcosa oltre a un "fallimento" !? – scotts

+2

Grazie per la risposta, ho avuto esattamente lo stesso dubbio. – Saiyine

97

Per descrivere il problema in altre parole:

Lo strumento apache comparativa (ab) assume che la lunghezza del contenuto di risposta sarà la stessa durante tutto il test. Memorizza la lunghezza del contenuto della prima risposta. Se una qualsiasi delle altre risposte ha una lunghezza di contenuto diversa, si traduce in "errori di lunghezza".

seguito segnalazione di bug apache sembra confermare che: ASF Bug 42040

Sommario: Se si sta servendo qualsiasi contenuto di lunghezza variabile, probabilmente si dovrebbe ignorare questo tipo di guasti Richiedi Ab.

Edit: Recentemente ho notato che il comando ab ha un nuovo (almeno per me) l'opzione:

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

posso vederlo in ab versione 2.3 < $ Revisione: 1.528.965 $ > ma non riesco a vederlo in ab Versione 2.3 < $ Revisione: 655654 $ >, quindi è stato probabilmente aggiunto relativamente di recente.

+2

grazie per l'opzione "-l" suggerimento! – gue

+3

Per chiunque su un Mac, è probabile che la tua versione di ab sia indietro e -l non lo farà. Puoi installare dal sorgente o tramite homebrew, ma "brew install ab" non funziona perché fa parte del pacchetto apache - puoi installare con "brew install homebrew/apache/ab". – netpoetica

5

Siamo spiacenti di ressurrect una vecchia domanda, ma è stato il primo che è apparso in Google. A volte l'errore di lunghezza riportato da ab potrebbe essere stato causato da un problema reale: se la connessione è chiusa lato server prima che la quantità totale di byte dichiarata nell'intestazione Content-Length non sia stata ricevuta dal client. Ciò può accadere se ci sono altre parti tra il client e il server, ad esempio, ingenui bilanciatori del carico fatti a mano (il mio caso).