Test di carico con AB... false richieste non riuscite (lunghezza)
-
06-09-2019 - |
Domanda
Per fare qualche test di carico, per mia curiosità, sul mio server ho eseguito:
ab -kc 50 -t 200 http://localhost/index.php
Questo apre 50 connessioni keep-alive per 200 secondi e blocca 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 le 32951 richieste "non riuscite".Non riesco a capirlo.
Mentre il test era in corso, sono riuscito ad accedere perfettamente al mio sito web dal computer di casa, anche se i tempi di caricamento della pagina nella parte inferiore della pagina sono stati riportati come .5 invece del solito .02.Tuttavia non ho mai ricevuto una richiesta non riuscita.
Allora perché AB segnala che metà delle connessioni non funzionano?E cosa significa "Lunghezza:" intendi in quel contesto?
Grazie
Soluzione
Non importa.Il "fallimento della lunghezza" indica semplicemente che circa la metà delle volte la lunghezza della risposta era diversa.
Poiché i contenuti sono dinamici, probabilmente è l'identificatore di sessione o qualcosa del genere.
Altri suggerimenti
Per descrivere il problema in altre parole:
Lo strumento di benchmarking di Apache (ab) presuppone che la lunghezza del contenuto della risposta sarà la stessa durante l'intero test.Memorizza la lunghezza del contenuto della prima risposta.Se una qualsiasi delle ulteriori risposte ha una lunghezza del contenuto diversa, si verificheranno "errori di lunghezza".
La seguente segnalazione di bug di Apache sembra confermare che: Bug ASF 42040
Riepilogo:Se stai offrendo contenuti di lunghezza variabile, probabilmente dovresti ignorare questo tipo di errori di richiesta ab.
Modificare:Recentemente ho notato che il ab
il comando ha una nuova opzione (almeno per me):
-l Accept variable document length (use this for dynamic pages)
Posso vederlo dentro ab Versione 2.3 <$Revisione:1528965$> ma non riesco a vederlo ab Versione 2.3 <$Revisione:655654$>, quindi probabilmente è stato aggiunto relativamente di recente.
Mi dispiace resuscitare una vecchia domanda, ma è stata la prima che è apparsa su Google.A volte l'errore di lunghezza segnalato da ab potrebbe essere stato causato da un problema reale:se la connessione viene chiusa lato server prima che la quantità totale di byte dichiarati 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 di carico realizzati a mano (il mio caso).