What Is It? ▲
Siege is an open-source stress/regression test and benchmarking utility. It can stress a single URL with a user-defined number of simulated users, or read multiple URLs into memory and stress them simultaneously. The program reports the total number of hits recorded, bytes transferred, response time, concurrency, and return status. Most features are configurable via command-line options, which also include default values to minimize the complexity of program invocation. Siege allows you to stress-test a web server with n users t times, where n and t are defined by the user. It records the test duration and the duration of each transaction. It reports the number of transactions, elapsed time, bytes transferred, response time, transaction rate, concurrency, and the number of times the server responded with a 200 OK. Siege was designed and implemented by Jeffrey Fulmer in his position as Webmaster for Armstrong World Industries. It was modeled in part after Lincoln Stein’s torture.pl, and its data reporting is almost identical. But torture.pl does not allow one to stress many URLs simultaneously; out of that need, Siege was born… When an HTTP server is under attack from the program, it is said to be "under siege.”
Why Do I Need It? ▲
Siege was written for both web developers and web systems administrators. It allows those individuals to test their programs and their systems under duress. As a web professional, you are responsible for the integrity of your product, yet you have no control over who accesses it. Traffic spikes can occur at any moment. How do you know if you’re prepared? Siege will allow you to place those programs under duress, helping you better understand the load they can withstand. You’ll sleep better knowing your site can handle 400 simultaneous transactions, even if it currently peaks at 250. A transaction is characterized by the server opening a socket for the client, handling a request, serving data over the wire, and closing the socket upon completion. It is important to note that HUMAN internet users take time to digest the data that comes back to them. Siege users do not. In practice, I’ve found that 400 simultaneous siege users translates to at least five times that amount in real internet sessions. This is why Siege allows you to set a delay (--delay=NUM). When set, each siege user sleeps for a random number of seconds between 1 and NUM. Through your server logs, you should be able to get the average amount of time spent on a page. It is recommended that you use that number for your delay when simulating internet activity.
Where Is It? ▲
The latest version is located here: https://download.joedog.org/siege/siege-latest.tar.gz
Installation ▲
Siege was built with GNU autoconf. If you are familiar with GNU software, then you should be comfortable installing siege Please consult the file INSTALL for more details.
Documentation ▲
Documentation is available in man pages siege(1), layingsiege(1). The most complete source of information is the Siege User’s Manual. Click HERE to read it.
License Information ▲
Please consult the file COPYING for complete license information. Copyright (C) 2000-2026 Jeffrey Fulmer. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last changed them.

