Web server benchmarking

Solitamente, prima di mettere in produzione una Web application, si rende necessario testarla in modo approfondito su di un ambiente apposito, in modo da ridurre al minimo eventuali problemi/disservizi riscontrati dagli utenti che intendono utilizzarla.
Tralasciando i veri test che puntano esclusivamente sull'usabilità e sul corretto funzionamento della Web application in quanto tale (oltre, ovviamente, agli aspetti legati alla sicurezza), è indispensabile effettuare delle prove di carico sul server Web che la ospita (o, in alternativa, sull'application server).
In questo post vi mostrerò come effettuare dei test di carico mediante due tool nati per questo scopo, ovvero httperf ed ab (aka Apache Benchmark).
Installiamo dunque gli applicativi menzionati in precedenza.
Il primo potete scaricarlo da qui (CentOS x86_64), mentre il secondo si trova all'interno del package httpd, installabile mediante un semplice packet manager (ad esempio yum): # yum install httpd Per installare httperf (dopo averlo scaricato), potete lanciare il comando: # rpm -ivh httperf-0.9.0-1.el6.rf.x86_64.rpm A questo punto possiamo dare inizio ai nostri test.
Per prima cosa faremo delle prove sul server lato utente anonimo, ovvero simuleremo il traffico generato da tutti gli utenti che non hanno ancora effettuato il login (sempre che la nostra Web application lo preveda).
# httperf --server=ipserverweb --uri=/ --num-conn 12000 --num-call 50 --rate 300 --timeout 5 In questo modo stiamo simulando un numero massimo di 12000 connessioni, ciascuna delle quali effettua 50 chiamate HTTP, ogni sencondo vengono effettuate 300 nuove connessioni (fino al tetto massimo di 12000) ed il timeout di ciascuna connessione è pari a 5 secondi.
Secondo questa logica, possono essere effettuati test di carico ancora più consistenti, ad esempio: # httperf --server=ipserverweb --uri=/ --num-conn 50000 --num-call 500 --rate 300 --timeout 30 o ancora: # httperf --server=ipserverweb --uri=/ --num-conn 100000 --num-call 1000 --rate 500 --timeout 60 I risultati dei suddetti test ci appariranno in un formato simile al seguente: Total: connections 4996 requests 249800 replies 249800 test-duration 44.835 s Connection rate: 111.4 conn/s (9.0 ms/conn,

Leggi tutto l'articolo