Apache Bench - Confronto degli output
In questo capitolo confronteremo gli output con e senza flag. Vediamo come l'uso di flag appropriati può aumentare le prestazioni della tua applicazione web. Prima di ciò, dobbiamo capire come se la tua applicazione è semplice, potresti non notare la differenza. Come nel caso della nostra semplice applicazione, con flag e senza flag. Quindi eseguiremo lo stesso test conhttps://www.apache.org/ URL e vedi la differenza.
Testare la nostra applicazione senza flag
In questa sezione capiremo come testare la nostra applicazione senza flag.
$ ab -n 100 -c 10 http://127.0.0.1:8000/
Produzione
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Rocket
Server Hostname: 127.0.0.1
Server Port: 8000
Document Path: /
Document Length: Variable
Concurrency Level: 10
Time taken for tests: 0.244 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Keep-Alive requests: 0
Total transferred: 27700 bytes
HTML transferred: 6600 bytes
Requests per second: 2208.77 [#/sec] (mean)
Time per request: 4.527 [ms] (mean)
Time per request: 0.453 [ms] (mean, across all concurrent requests)
Transfer rate: 597.49 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.7 2 3
Processing: 0 2 0.7 2 4
Waiting: 0 2 1.0 2 3
Total: 4 4 0.3 4 5
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 5
80% 5
90% 5
95% 5
98% 5
99% 5
100% 5 (longest request)
Testare la nostra applicazione con i flag
In questa sezione capiremo come testare la nostra applicazione con i flag.
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://127.0.0.1:8000/
Produzione
...
Requests per second: 2277.07 [#/sec] (mean)
Time per request: 4.392 [ms] (mean)
Time per request: 0.439 [ms] (mean, across all concurrent requests)
Transfer rate: 615.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.7 2 3
Processing: 0 2 0.7 2 4
Waiting: 0 2 1.0 2 3
Total: 4 4 0.2 4 5
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 4
80% 4
90% 5
95% 5
98% 5
99% 5
100% 5 (longest request)
Possiamo semplicemente notare che non c'è molta differenza tra le statistiche di output.
Test del sito Web dell'organizzazione Apache senza flag
Vediamo ora come testare il sito Web dell'organizzazione Apache senza flag.
$ ab -n 100 -c 10 http://www.apache.org/
Produzione
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.apache.org (be patient).....done
Server Software: Apache/2.4.7
Server Hostname: www.apache.org
Server Port: 80
Document Path: /
Document Length: 58433 bytes
Concurrency Level: 10
Time taken for tests: 1.498 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 5877500 bytes
HTML transferred: 5843300 bytes
Requests per second: 66.74 [#/sec] (mean)
Time per request: 149.840 [ms] (mean)
Time per request: 14.984 [ms] (mean, across all concurrent requests)
Transfer rate: 3830.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 12 110 295.2 12 1012
Processing: 37 38 0.5 38 39
Waiting: 12 13 0.3 13 15
Total: 49 147 295.4 50 1051
Percentage of the requests served within a certain time (ms)
50% 50
66% 50
75% 50
80% 50
90% 816
95% 1050
98% 1051
99% 1051
100% 1051 (longest request)
Test del sito Web dell'organizzazione Apache con i flag
Proviamo ora a testare il sito Web dell'organizzazione Apache con i flag.
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.apache.org/
Produzione
...
Document Length: Variable
Concurrency Level: 10
Time taken for tests: 0.357 seconds
Complete requests: 100
Failed requests: 0
Keep-Alive requests: 100
Total transferred: 1358510 bytes
HTML transferred: 1317700 bytes
Requests per second: 280.28 [#/sec] (mean)
Time per request: 35.678 [ms] (mean)
Time per request: 3.568 [ms] (mean, across all concurrent requests)
Transfer rate: 3718.41 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 3.7 0 12
Processing: 14 17 21.3 15 227
Waiting: 14 17 21.3 14 227
Total: 14 18 21.5 15 227
Percentage of the requests served within a certain time (ms)
50% 15
66% 15
75% 15
80% 15
90% 27
95% 28
98% 29
99% 227
100% 227 (longest request)
Puoi semplicemente notare come la richiesta al secondo è aumentata con l'uso dei flag. Nella fattispecie, è particolarmente dovuto all'uso di-H "Accept-Encoding: gzip, deflate perché questo flag indica al server Apache di servire le richieste in gzipped formato.
Considerando i risultati del banco di Apache
Alcuni punti importanti devono essere considerati quando si tratta dei risultati di Apache Bench. Questo ci aiuterà a progettare la nostra strategia generale per rimuovere i colli di bottiglia nella nostra applicazione e migliorarne le prestazioni.
Abbiamo bisogno di richieste al secondo. Questo ci dà un'idea di come funziona bene la configurazione del nostro server web; maggiore è il numero, migliori sono le prestazioni. Poi vengono i tempi di connessione (ms) e la percentuale delle richieste servite. Potrebbe essere necessario modificare le impostazioni del server Web per modificare queste metriche in base alle prestazioni desiderate.
Verificare se sono presenti errori nei log degli errori del server Web di Apache o utilizzato o nei log (generali). Man mano che aumenterai il tuo carico, le cose inizieranno a soffocare: inizieranno a sorgere problemi di memoria. Molti script Python inizieranno a bloccarsi se non sono scritti pensando alla concorrenza.
Hai bisogno di scoprire qual è il valore critico di concorrenza al di sopra del quale il tuo server web si blocca e / o va in timeout? Normalmente questo dovrebbe accadere a un livello di concorrenza abbastanza alto. Se questo valore è basso, qualcosa non va ed è necessario regolare queste impostazioni più in basso / più in alto.
Conclusione
In questo tutorial abbiamo imparato come utilizzare Apache Bench per testare il carico di qualsiasi sito web o applicazione web. Apache Bench può essere uno strumento molto prezioso per determinare come migliorare la configurazione del server di applicazioni Web, ridurre i colli di bottiglia e aumentare le prestazioni. Ora che hai familiarità con l'utilizzo di base di Apache Bench, puoi iniziare creando nuovi piani di test per misurare le prestazioni delle tue applicazioni in vari scenari.