|
Siege è un interessante programma per effettuare test di carico su protocollo HTTP.
E’ stato progettato per consentire ai web developers di misurare l'efficienza del proprio codice, insomma, per vedere come funzionerà una volta stressato sotto il peso della rete. Supporta l’autenticazione di base, i cookie, i protocolli HTTP e HTTPS e consente di colpire un web server con un numero configurabile di browser web simulati.
Siege è stato scritto su GNU/Linux ed è stato portato con successo su AIX, HP-UX e Solaris. Si dovrebbe compilare su molte varianti di UNIX System V e sulla maggior parte dei nuovi sistemi BSD.
Vedremo un caso d'installazione/uso su distribuzione Debian based.
Su una Debian installarlo è facile, basta dare:
root@host:/# aptitude install siege
Siege permette di stressare un web server con un numero "n" di utenti per numero "t" di volte, (n e t definiti dall’utente). Registra il tempo di durata della prova così come la durata di ogni singola operazione.
Per un primo test potete dare questo comando:
root@host:/# siege -b -c 10 -r 3 http://www.miosito.it
** SIEGE 2.70 ** Preparing 10 concurrent users for battle. The server is now under siege... HTTP/1.1 200 2.40 secs: 11707 bytes ==> / HTTP/1.1 200 3.13 secs: 11707 bytes ==> / HTTP/1.1 200 3.39 secs: 11707 bytes ==> / HTTP/1.1 200 3.45 secs: 11707 bytes ==> / HTTP/1.1 200 3.52 secs: 11707 bytes ==> / HTTP/1.1 200 3.57 secs: 11707 bytes ==> / HTTP/1.1 200 3.61 secs: 11707 bytes ==> / HTTP/1.1 200 3.64 secs: 11707 bytes ==> / HTTP/1.1 200 3.70 secs: 11707 bytes ==> / HTTP/1.1 200 3.74 secs: 11707 bytes ==> / HTTP/1.1 200 4.09 secs: 11707 bytes ==> / HTTP/1.1 200 4.00 secs: 11707 bytes ==> / HTTP/1.1 200 5.25 secs: 11707 bytes ==> / HTTP/1.1 200 4.34 secs: 11707 bytes ==> / HTTP/1.1 200 4.48 secs: 11707 bytes ==> / HTTP/1.1 200 4.82 secs: 11707 bytes ==> / HTTP/1.1 200 4.77 secs: 11707 bytes ==> / HTTP/1.1 200 5.00 secs: 11707 bytes ==> / HTTP/1.1 200 4.95 secs: 11707 bytes ==> / HTTP/1.1 200 5.54 secs: 11707 bytes ==> / HTTP/1.1 200 5.42 secs: 11707 bytes ==> / HTTP/1.1 200 4.61 secs: 11707 bytes ==> / HTTP/1.1 200 5.45 secs: 11707 bytes ==> / HTTP/1.1 200 5.67 secs: 11707 bytes ==> / HTTP/1.1 200 6.26 secs: 11707 bytes ==> / HTTP/1.1 200 5.64 secs: 11707 bytes ==> / HTTP/1.1 200 7.34 secs: 11707 bytes ==> / HTTP/1.1 200 6.58 secs: 11707 bytes ==> / HTTP/1.1 200 8.01 secs: 11707 bytes ==> / HTTP/1.1 200 7.11 secs: 11707 bytes ==> / done. Transactions: 30 hits Availability: 100.00 % Elapsed time: 15.29 secs Data transferred: 0.33 MB Response time: 4.78 secs Transaction rate: 1.96 trans/sec Throughput: 0.02 MB/sec Concurrency: 9.38 Successful transactions: 30 Failed transactions: 0 Longest transaction: 8.01 Shortest transaction: 2.40
Abbiamo eseguito il benchmark del sito http://www.miosito.it, lanciando 10 connessioni contemporanee al sito, ed eseguendo il test in un ciclo di 3 volte.
Di default tutti gli output delle prove di benchmarking di Siege sono registrate nel file di output /var/siege.log.
Un’altra opzione che offre Siege è la possibilità di controllare un certo numero di indirizzi del sito web fornito attraverso l’opzione -i.
Altro esempio:
root@host:/# siege -c 30 -i -t 10m -d 5 -f sitemap.txt
In questo modo simuliamo 30 utenti simultanei, tutti richiedono pagine casuali da un elenco di URL (tratte dal file sitemap.txt), con un ritardo di 5 secondi dopo ogni pagina (per simulare la lettura della pagina da parte dell’utente). Così è stato impostato per essere eseguito per 10 minuti.
E’ anche possibile impostare le opzioni nel file di configurazione $HOME/.siegerc come ad esempio:
/root/.siegercerbose = true show-logfile = true logging = true protocol = HTTP/1.1 chunked = true cache = false connection = close concurrent = 15 delay = 1 accept-encoding = gzip spinner = true internet = true benchmark = true
Siege si dimostra quindi una utility davvero interessante già dal suo utilizzo base. Una conclusione unica: tenetelo presente nei vostri test di carico!
|