Monitora le prestazioni di un server Apache

Quando vuoi monitorare un server apache, dobbiamo conoscere alcuni aspetti:

  • Quante richieste può sopportare
  • Velocità con cui risponde alle richieste
  • Qual è il tempo di attesa?
  • Quali applicazioni o servizi possono essere migliorati o ottimizzati
Per misurare le prestazioni di un server utilizzeremo uno strumento chiamato Apache Benchmark o ApacheBench.

ApacheBenchApacheBench è un software per computer che viene eseguito sulla riga di comando per misurare le prestazioni in particolare dei server Web e del servizio http. Questo software è stato sviluppato per testare il server HTTP Apache, ma essendo uno strumento per testare i servizi http è possibile utilizzarlo per testare qualsiasi server web come Nginx, Lighttpd.

Lo strumento ApacheBench è nei repository Linux e come libreria sul server Apache e quindi è un software open source gratuito e utilizza la licenza Apache.

Questo tipo di test è molto facile da eseguire in modo rapido utilizzando il comando Apache Bench ab.

Questo test ci mostrerà rapidamente se c'è un problema immediato con l'installazione di Apache e quindi risponde male.

Ci aiuta anche con la seguente domanda Fino a che punto posso utilizzare o forzare il server e le sue risorse Web con Apache, PHP e MySQL? (con connessioni simultanee e pagina di richiesta di caricamento), oltre a ciò che dobbiamo ottimizzare nella configurazione di Apache e PHP per ottenere un prestazioni migliori ed eliminare i problemi di risposta alle richieste dei visitatori.

1. Installazione di ApacheBench su server Linux


Ubuntu / Debian
 sudo apt-get install -y apache2 sudo apt-get install apache2-utils

Redhat / Centos

 yum install httpd-tools

Faremo dei test con domini e ip differenti. Inizieremo aprendo una finestra di terminale ed eseguire i seguenti test:

Server locale o localhost anche ip 127.0.0.1

 da 127.0.0.1/
localhost

2. Interrogazioni


Esaminiamo una query con parametri. Inviamo 100 richieste in gruppi di 30 alla volta a google.com e salviamo i dati ottenuti in un file csv, il codice è il seguente:
 ab -g data.csv -n 100 -c 30 google.com/

Analizziamo il risultato

 Software server: GFE / 2.0 // Sito operativo Server web Google basato su server Linux Nome host: google.com Porta server: 80 Percorso documento: / Lunghezza documento: 262 byte Livello di concorrenza: 30 Tempo impiegato per i test: 1.370 secondi Richieste complete: 100 Richieste non riuscite: 0 Risposte non 2xx: 100 Totale trasferite: 53100 byte HTML trasferiti: 26200 byte Richieste al secondo: 73,01 [# / sec] (media) // media per richiesta Tempo per richiesta: 410.899 [ms] (media) / / media per richiesta Tempo per richiesta: 13.697 [ms] (media, tra tutte le richieste simultanee) // media per totale Velocità di trasferimento: 37.86 [Kbyte / sec] ricevuti Tempi di connessione (ms) // Tempo di connessione, processo e attesa media minima [+/- sd] mediana max Connessione: 42 81 53,0 73 446 Elaborazione: 48 190 265,7 88 1286 In attesa: 46 114 148,2 86 1246 Totale: 114 270 274,7 150 1369 Percentuale delle richieste servite entro un certo tempo (ms) 50 % 150 66% 203 75% 222 80% 243 90% 844 95% 953 98% 1088 99% 1369 100% 1369 (richiesta più lunga)

Vediamo che ha risposto a 73 richieste al secondo con un tempo medio per richiesta 410.899 millisecondi e una velocità di trasferimento di 37,86 Kbyte/sec, vediamo anche come varia la connessione, il processo e il tempo di attesa.

Il file di dati CSV avrà la seguente struttura.

Struttura CSV

 (starttime) Mar Mar 24 11:53:03 2015 - (secondi) 1427208783 - (ctime) 46 - (dtime) 68 - (ttime) 114 - (attesa) 66 (starttime) Mar Mar 24 11:53:03 2015 - (secondi) 1427208783 - (ctime) 46 - (dtime) 74 - (ttime) 120 - (wait) 72 (starttime) Mar Mar 24 11:53:03 2015 - (secondi) 1427208783 - (ctime) 64 - (dtime) 56 - (ttime) 120 - (attendere) 56

Successivamente dal terminale con un editor di testo creeremo un file di testo per valutare più url dello stesso dominio. Lo strumento ApacheBench supporta fino a 20 mila URL come i seguenti.

Il file avrà la seguente struttura:

 http://example.com/index.html/ http://example.com/news.html/ http://sottodominio.example.com/
Testiamo una richiesta alla volta:
 ab -g data.csv -n 1000 urls.txt
In questo caso, ApacheBench raccogliere gli indirizzi di urls.txt e inviare richieste al server. Il nome di dominio degli URL deve essere lo stesso per tutti gli URL.

Caso in cui 10 utenti simultanei effettuano ciascuno 10 visite al sito web
Si tratta di circa 100 pagine che vengono caricate da 10 diversi utenti simultanei e ricorrenti, ogni utente sta realizzando 10 pagine che si caricano o vengono mostrate in sequenza in ogni richiesta.

Testiamo:

 ab -l -r -n 100 -c -k 10 http://www.eexample.com/clients/
Questo rappresenta un carico massimo su un sito Web che riceve circa 100.000 visite al mese che devono essere supportate e a cui il server deve rispondere.

Caso in cui 50 utenti simultanei visitano la stessa pagina Web 20 volteSi tratta del server che risponde a 1000 pagine, ovvero 50 utenti per 20 richieste contemporaneamente, ogni utente effettua 20 query alle pagine in sequenza:

 ab -l -r -n 1000 -c -k50 http://www.eexample.com/chat/
Questo può essere utilizzato per testare un blog o un sistema in cui utenti o visitatori commentano molto inviando molte richieste come una chat o un sistema di commento come Facebook.

Questo tipo di test può essere equivalente al traffico di un sito web o blog molto attivo.

Test rapido di PHP e MySQLCreiamo qualsiasi database mysql o se ne abbiamo uno da testare lo usiamo, quindi creiamo lo script php chiamato absql.php

 AB Test Php e MySQL 
Inviamo 10.000 richieste allo script e quindi a MySQL.
 ab -n 1000 -c 5 http://190.165.210.108/absql.php

Analizza i risultati di ogni test con ApacheBench. I dati più importanti sono quelli che ci forniscono informazioni su richieste e risposte dal server:

Analizza i risultati di ApacheBench1. Quante richieste al secondo può servire il server visualizzando? Gli altri indicatori non sono molto utili in quanto non sono rappresentativi di qualcosa di reale in questo contesto.

2. Ci sono errori nella pagina web o nella configurazione di Apache? Quando il server impiega tempo per rispondere o si blocca, dobbiamo analizzare se ci sono problemi di memoria o un elevato consumo di risorse.

3. A quale livello di concorrenza il server Apache inizierà a rallentare o si arresterà in modo anomalo e quanto durerà il tempo di attesa? Se questo accade a un basso livello di concorrenza, qualcosa non va, dovremmo sapere cos'è e cosa è necessario per farlo funzionare, forse più risorse del server.

3. Fattori da considerare per migliorare le prestazioni in Apache


Prestazioni di Apache1. Modulo Mod_cache da Apache alla pagina della cache delle richieste/risultati. Ciò produrrà un miglioramento delle prestazioni di 5-10 volte rispetto a tutti gli altri metodi combinati.

2. php_memcache gestisce la cache dei dati per gli script e le query PHP. Questo può produrre un aumento delle prestazioni del 50% -100% sulle pagine web.

3. Plugin cache per Joomla, WordPress, PrestaShop e alcuni Framework o CMS.

4. Mod_scade il modulo Apache per utilizzare la cache del visitatore e conservare le pagine per un certo tempo, invece di effettuare nuovamente una richiesta a quelle pagine e dover ricaricare, funziona se il web non cambia il suo contenuto ogni minuto.

Un altro aspetto che influisce notevolmente sulle prestazioni di Apache è PHP e MySQL, migliorando le prestazioni di MySQL ottimizzando la configurazione del file mio.ini di xampp, wampp o lampp e ottimizzare le query o richieste al web che utilizza php e genera contenuti da MySQL, cercando di ottimizzare l'uso del log delle query lente di MySQL per vedere qual è il problema e migliorare le prestazioni.

Se vuoi maggiori informazioni su come usare AppacheBench.

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave