Siege is an http load testing and benchmarking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. It lets its user hit a server with a configurable number of simulated clients. Those clients place the server under siege
.
Installation Procedure.
First install prerequisites gcc/make on server. If Ubuntu
sudo apt-get install gcc make
On Centos/Redhat
sudo yum install gcc make
Step to Installation.
$ ./configure
$ make
$ sudo make install
Files Installed.
siege --> SIEGE_HOME/bin/siege
bombardment --> SIEGE_HOME/bin/bombardment
siege2csv --> SIEGE_HOME/bin/siege2csv
.siegerc --> $HOME/.siegerc
siege.1 --> SIEGE_HOME/man/man1/siege.1
bombardment.1 --> SIEGE_HOME/man/man1/bombardment.1
siege2csv.1 --> SIEGE_HOME/man/man1/siege2csv.1
layingsiege.1 --> SIEGE_HOME/man/man1/layingsiege.1
urls_text.1 --> SIEGE_HOME/man/man1/urls_txt.1
urls.txt --> SIEGE_HOME/etc/urls.txt
Usage for siege
command.
root@SIDCLB:~# siege
SIEGE 3.0.9
Usage: siege [options]
siege [options] URL
siege -g URL
Options:
-V, --version VERSION, prints the version number.
-h, --help HELP, prints this section.
-C, --config CONFIGURATION, show the current config.
-v, --verbose VERBOSE, prints notification to screen.
-q, --quiet QUIET turns verbose off and suppresses output.
-g, --get GET, pull down HTTP headers and display the
transaction. Great for application debugging.
-c, --concurrent=NUM CONCURRENT users, default is 10
-i, --internet INTERNET user simulation, hits URLs randomly.
-b, --benchmark BENCHMARK: no delays between requests.
-t, --time=NUMm TIMED testing where "m" is modifier S, M, or H
ex: --time=1H, one hour test.
-r, --reps=NUM REPS, number of times to run the test.
-f, --file=FILE FILE, select a specific URLS FILE.
-R, --rc=FILE RC, specify an siegerc file
-l, --log[=FILE] LOG to FILE. If FILE is not specified, the
default is used: PREFIX/var/siege.log
-m, --mark="text" MARK, mark the log file with a string.
-d, --delay=NUM Time DELAY, random delay before each requst
between 1 and NUM. (NOT COUNTED IN STATS)
-H, --header="text" Add a header to request (can be many)
-A, --user-agent="text" Sets User-Agent in request
-T, --content-type="text" Sets Content-Type in request
For more detailed information, consult the man pages:
$ man siege
$ man layingsiege
$ man siege.config
All the siege man pages are also available online:
http://www.joedog.org/siege/docs/man/index.html
OR, read the html manual, doc/manual.html The manual is also available online:
http://www.joedog.org/siege/docs/manual.html
Usage Procedure
Basic Commands
To test the GET request, you would run
siege http://example.com/ -c 100 -r 100
To test the POST request, you would run
siege -H 'Content-Type:application/json' "http://example.com/ POST < ./data.json" -c 10 -r 1000