Provided by: siege_4.0.4-1build1_amd64
siege - An HTTP/FTP load tester and benchmarking utility.
siege [options] siege [options] <URL> siege [options] -g <URL> siege [options] -f urls.txt
siege is a multi-threaded HTTP/FTP load tester and benchmarking utility. It supports most of the features detailed in RFCs 2616 (HTTP) and 959 (FTP). Properties can be set at both from the command line and in a configuration file. When the same propertie is set in both locations, the command line takes precedent. The default configuration file is $HOME/.siege/siege.conf If you don't have a $HOME/.siege directory and a siege.conf and cookies.txt file, siege will generate a new config directory when it runs. You can generate your configu directory with the following command: siege.config
siege supports RFC 1738 URL formats but it takes pains to implement commonly used shortcuts for your convenience. In addition to RFC 1738 formats, siege introduces its own URL format to indicate protocol method. An RFC 1738 URL looks like this: <scheme>://<username>:<password>@<hostname>:<port>/<path>;<params>?<query>#<frag> A siege URL with a method idicator looks like this: <scheme>://<username>:<password>@<hostname>:<port>/<path> POST <query> You can also post the contents of a file using the redirect character like this: <scheme>://<username>:<password>@<hostname>:<port>/<path> POST </home/jeff/haha.txt Here's two examples with the siege method indicator: http://www.joedog.org/ POST haha=papa&dada=mama ftp://ftp.armstrong.com/ PUT </home/jdfulmer/etc/tests/bbc.jpg NOTE: If you set URLs with method indicators at the command-line, then you MUST quote the thing or your shell will treat it like three separate arguments. If the URL is in a urls.txt file, then you shouldn't quote it. As mentioned above, siege goes to great lengths to allow commonly used shortcuts that you're used to from most browser implementations. It treats many parts of the 1738 URL as optional. In this example, the parts in brackets are optional: [scheme://] host.domain.xxx [:port] [/path/file] When siege receives a host name it builds the URL with default assumptions. www.joedog.org becomes http://www.joedog.org:80/
From the section called Option Syntax above we learn that siege can take a URL as an argument. siege -c -r2 www.joedog.org will request the JoeDog index page twice. But what if you want to hit large portions of the site? siege will allow you to fill a file with URLs so that it can run through list. The format for the file is one URL per line: https://www.joedog.org/ https://www.joedog.org/haha/ https://www.joedog.org/haha/ POST homer=simpson&marge=doestoo The file also supports UNIX-style commenting: # Comment looks like this https://www.joedog.org/ https://www.joedog.org/haha/ https://www.joedog.org/haha/ POST homer=simpson&marge=doestoo It supports shell-style variable declaration and references. This is convenient if you want to run the same test on two different tiers or two different shemes: SCHEME=https HOST=bart.joedog.org $(SCHEME)://$(HOST)/ $(SCHEME)://$(HOST)/haha/ $(SCHEME)://$(HOST)/haha/ POST homer=simpson&marge=doestoo You can tell siege about this file with the -f/--file option: siege -c1 -r50 -f /home/jeff/urls.txt
When its run is complete, siege will gather performance data from all its clients and summarize them after the run. (You can also choose to log these numbers). The command-line output is modeled after Lincoln Stein's torture.pl script: Transactions: 2000 hits Availability: 100.00 % Elapsed time: 58.57 secs Data transferred: 5.75 MB Response time: 0.25 secs Transaction rate: 34.15 trans/sec Throughput: 0.10 MB/sec Concurrency: 8.45 Successful transactions: 2000 Failed transactions: 0 Longest transaction: 4.62 Shortest transaction: 0.00 Transactions This number represents the total number of HTTP requests. In this example, we ran 25 simulated users [-c25] and each ran ten times [-r10]. Twenty-five times ten equals 250 so why is the transaction total 2000? That's because siege counts every request. This run included a META redirect, a 301 redirect and the page it requested contained several elements that were also downloaded. Availability This is the percentage of socket connections successfully handled by the server. It is the result of socket failures (including timeouts) divided by the sum of all connection attempts. This number does not include 400 and 500 level server errors which are recorded in "Failed transactions" described below. Elapsed time The duration of the entire siege test. This is measured from the time the user invokes siege until the last simulated user completes its transactions. Shown above, the test took 14.67 seconds to complete. Data transferred The sum of data transferred to every siege simulated user. It includes the header information as well as content. Because it includes header information, the number reported by siege will be larger then the number reported by the server. In internet mode, which hits random URLs in a configuration file, this number is expected to vary from run to run. Response time The average time it took to respond to each simulated user's requests. Transaction rate The average number of transactions the server was able to handle per second, in a nutshell: it is the count of all transactions divided by elapsed time. Throughput The average number of bytes transferred every second from the server to all the simulated users. Concurrency This is the average number of simultaneous connections. The metric is calculated like this: the sum of all transaction times divided by elapsed time (how long siege ran) Successful transactions The number of times the server responded with a return code < 400. Failed transactions The number of times the socket transactions failed which includes socket timeouts. Longest transaction The greatest amount of time that any single transaction took, out of all transactions. Shortest transaction The smallest amount of time that any single transaction took, out of all transactions.
Jeffrey Fulmer, et al. <email@example.com> is the primary author of siege. Numerous people throughout the globe also contributed to this program. Their contributions are noted in the source code ChangeLog
Copyright by Jeffrey Fulmer, et al. <firstname.lastname@example.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
The most recent released version of siege is available by HTTP download: http://download.joedog.org/pub/siege
siege.config(1) bombardment(1) siege2csv(1)