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.”
Siege was written on GNU/Linux and has been successfully ported to AIX, BSD, HP-UX and Solaris. It should compile on most System V UNIX variants and on most newer BSD systems. Because Siege relies on POSIX.1b features not supported by Microsoft, it will not run on Windows. Of course you can use Siege to test a Windows server.
NEWS & RELEASE INFORMATION
SIEGE-3.1.4 – This release fixes issues with HTTP PROXY authentication.
SIEGE-3.1.3 – This release fixes a documentation typo and includes several minor fixes. (When you see releases like this, you know a Linux distributor was on our ass about something…)
SIEGE-3.1.2 – This release adds support for Server Name Indication. It also includes several bug fixes associated with HTTP authentication.
SIEGE-3.1.0 – This release adds support for more than 1024 concurrent users. (Please don’t use that many unless you know what you’re doing). It also adds delay granularity. You can now select set delays to hundreds of a second like this: –delay=0.001 or -d 0.001
SIEGE-3.0.9 – This release is intended to bring siege into the 21st Century. It fixes lots of compiler warnings which are thrown by more recent versions of gcc. While it contains no sexy new features, you should probably upgrade to this version.
SIEGE-3.0.8 – This release adds the port number to a redirect URL on the condition that request is made to a non-standard port. It also adds the location of the log file on logging errors. This should make it easier for users to correct their problem. “Oh, look, it’s trying to log to a location that doesn’t exist.”
SIEGE-3.0.7 This release fixes a bug introduced in siege-3.0.6. Rather than strictly adhere to the RFC, siege will construct an absolute URL from a relative one. While this is convenient it missed a usecase. Siege-3.0.6 barfs on Location: http://localhost All siege 3.0.6 users should upgrade to 3.0.7.
SIEGE-3.0.6 With this release, siege changes the way it handles –reps=once. It now divides a urls.txt file evenly among all its users, and each URL in the file is hit exactly once. This release also includes several fixes and a documentation update.
SIEGE-3.0.5 This release addresses another inconsistency between the HTTP standard and practice. While RFC 2616 allows a port designation in the Host header, it confuses too many implementations for Siege to continue to send it. This version also fixes several significant bugs. All Siege users should update to this version.
SIEGE-3.0.4 Although RFC 2616 specifies that Location directives must contain an absolute URI, most Web clients normalize relative URIs. This release adds conventional compliance with relative URI handling. Ironically, it also includes a new default user-agent so that field is in compliance with RFC 2616.
SIEGE-3.0.3 This release features one prominent new feature, URL escaping. Reserved characters are %-encoded as per RFC 3986. This release also features numerous bugfixes such as improved variable evaluation in the urls.txt file, dynamic Accept-Encoding, improved siegerc parsing, and several memory fixes.
SIEGE-3.0.0 This is the first major siege release in over a decade. Significant portions were rewritten in order to add support for additional protocols. This release adds limited support for FTP. You can get and put files to a server. FTP is invoked automatically based on the URL scheme, i.e., ftp://
SIEGE-BETA – Developers should submit patches that are diff’d against the latest beta.
“This is an excellent application that does something expensive suites don’t. ie. It does what the users expects it to do, and does it simply.”
— Sgt. Scrub