How to Install Siege on Ubuntu 24.04, 22.04 or 20.04

This guide will illustrate the steps to install Siege on Ubuntu 24.04, 22.04, or 20.04 LTS Linux releases. It will cover the process of employing the command-line terminal, utilizing either the APT Package Manager for a straightforward installation or an alternative approach that involves downloading and compiling the source to install the latest Siege binary for those seeking an updated version.

Siege stands as a powerful open-source tool designed for conducting regression tests and benchmarking web applications. Its versatility allows users to simulate multiple users hitting a web server with a mix of URLs, providing invaluable insights into how systems perform under stress.

Siege’s key features include:

  • Ability to simulate numerous users to test web server capacity and performance under varied load conditions.
  • Flexibility in testing: Users can specify a list of URLs to be hit by Siege, allowing for comprehensive testing of web applications.
  • Detailed reporting: Siege generates reports that include the number of hits, elapsed time, data transferred, response time, transaction rate, throughput, and concurrency levels.
  • Customizable configurations: Offers the flexibility to adjust test parameters according to specific testing needs.
  • Support for basic authentication and cookies: Enables testing of web applications that require login credentials.
  • Capability to test over HTTPS: Ensures that secure websites can also be benchmarked and tested for performance.
  • Automatic retry of failed transactions: Helps in understanding the robustness of the web application under test.
  • Open-source nature: Allows for customization and enhancements by the community, ensuring that Siege stays up-to-date with the latest web technologies and standards.

By leveraging these features, developers and system administrators can gain a deeper understanding of their web application’s performance, identify bottlenecks, and work towards optimizing their systems for better scalability and efficiency.

Let’s dive into the technical steps to get Siege up and running on your system.

Install Siege on Ubuntu

Update Ubuntu Before Siege Installation

Ensuring your Ubuntu system is up-to-date with the latest packages is crucial for maintaining an efficient, secure, and dependable computing environment. When we execute the command sudo apt update, the system’s package lists are refreshed.

Here’s the command to perform this:

sudo apt update && sudo apt upgrade

Select Siege Installation Method on Ubuntu

Option 1: Install Siege via Ubuntu APT repository

Siege is included in Ubuntu’s default repositories as a handy benchmarking tool. This simplifies the installation process significantly, allowing us to use Ubuntu’s built-in package management tool (APT) to carry out the installation.

The command sudo apt install siege triggers the APT system to search for the Siege package in the repositories, handle dependencies, and install Siege on your system. The ‘sudo’ at the beginning is necessary as it allows the command to be executed with root privileges, which are required for system-wide installations.

To install Siege, input the following command:

sudo apt install siege 

Option 2: Install Siege on Ubuntu via source

Compiling Siege from its source code is optimal for individuals who prefer to stay updated with the latest features and improvements. This method entails fetching the most recent source code and manually compiling it, ensuring you have the most up-to-date version of Siege.

Downloading the Latest Siege Source

To begin, you’ll need to procure the latest source code. The Siege team provides a consistent link for the latest version, simplifying this process. However, ensuring the link remains valid over time is always a good practice.

To download the latest source code, open your terminal and execute the following command:

Extracting and Preparing the Source

Once the download completes, extracting the archive’s contents is the next step. Execute the following command to achieve this:

tar -xvf siege-latest.tar.gz

This command will decompress the Siege source code into a directory. Navigate to this directory with:

cd siege-*/

It’s worth noting that the exact directory name might vary with different Siege versions. Ensure you’re in the correct directory before proceeding further.

Before diving into the compilation process, it’s recommended to install the zlib package, which aids in the compression and decompression of data:

sudo apt install zlib1g-dev
Compile and Install Siege Binary

Now, you’ll initiate the compilation and installation process within the Siege source directory. The sequence of commands below will configure the build settings, compile the source code, and subsequently install Siege on your Ubuntu system:

./configure --with-zlib
sudo make install

These commands configure the build options, compile the source code, and install Siege on your Debian system.

Terminal output showing Siege configuration and build on Ubuntu.
Output of Siege configure and build process on Ubuntu LTS.

Verifying Siege Installation

After the installation, it’s essential to verify that Siege has been correctly installed. Additionally, checking the installed version can provide insights into its compatibility with specific features or plugins and inform you if future updates are necessary.

To ascertain the installed version of Siege on your system, run the following:

siege --version
Terminal confirms installation of the latest Siege version on Ubuntu LTS.
Confirmation of the latest Siege version installed on Ubuntu.

Configure Siege on Ubuntu

Configuring Siege correctly is essential to function optimally and leverage its capabilities thoroughly. This process involves modifying the Siege configuration file located in the home directory under the name .siegerc.

Locating the Siege Configuration File

The siegerc file is a key asset, serving as the control center for Siege’s operation. It comprises a myriad of parameters that dictate the tool’s behavior. These parameters include the number of simulated users, the delay between requests, and the logging level.

Let’s start by exploring the existing siegerc file. You can accomplish this by running the cat command:

cat /etc/siege/siegerc

Configure Siege Configuration File

You’ll need to open the file using a text editor to alter the Siege configuration to align with your specific use case. In this guide, we’ll employ nano for its user-friendliness and simplicity.

The command below allows you to open the siegerc file in the nano text editor:

sudo nano /etc/siege/siegerc

This file is a treasure trove of configurable options, but we’ll focus on some of the more commonly used parameters:

  • verbose: Determines whether the detailed output is displayed (true) or not (false).
  • csv: Indicates whether the output should be in CSV format (true) or not (false).
  • concurrent: Specifies the number of simulated users for the load test.
  • time: Determines the duration of the load test.
  • delay: Sets the time delay between each user’s request.
  • internet: Simulates internet user behavior by hitting random URLs on a website (true) or not (false).
  • benchmark: Allows Siege to run as a benchmark tool (true) or not (false).

As an example, if you want to set up a scenario where 25 users are simulated, each user sends a request every second, and the testing lasts for 1 hour, you would modify the relevant parameters as follows:

verbose = false
csv = true
concurrent = 25
time = 1H
delay = 1S
internet = false
benchmark = false

Once you’ve made your desired changes, save and exit by pressing Ctrl+X, followed by Y to confirm saving the changes, and then hit Enter.

HTTP Load Test with Siege on Ubuntu

Now that we’ve got Siege installed and configured let’s dive into some practical examples to give you a concrete sense of how this tool works. In these demonstrations, we’ll put your web server under a stress test, simulating a flood of requests, unlike a DDoS attack. This can be highly valuable for understanding how your website would handle heavy traffic. However, obtain the necessary permissions and use these tools responsibly. They should ideally only be used on your servers.

BenchMark Load Test Website with Siege

First, apply Siege to test a website using the default number of simulated users (also known as “workers”), which is 25. We’ll also set the duration of the stress test to be one minute. This is achieved by using the -t 1m flag, as shown in the command below:

siege -t 1m

Once you execute this command, Siege will start the stress test, simulating 25 concurrent users sending requests to your site for 1 minute. After the test concludes, Siege will present a detailed results report.

Remember that running the test for more meaningful and accurate insights is usually best for 5 to 15 minutes. The 1-minute duration was merely for demonstration purposes.

To increase the number of workers, you can employ the -c flag followed by the desired number. For example, to simulate 100 workers, use the -c 100 flag:

siege -c 100 -t 2m
Executing a Siege load test on using Ubuntu LTS.
Running a load test on via Siege on Ubuntu.

Stress Testing Multiple Websites with Siege

If you’re a system administrator or manage multiple domains, you’ll be pleased to know that Siege can handle multiple websites simultaneously. This is achievable through a configuration file /etc/siege/urls.txt, which Siege can use to determine which websites to stress test.

To configure this file, open it using nano:

sudo nano /etc/siege/urls.txt

Then, insert the URLs of the websites you want to stress test:

To save these changes and exit, press Ctrl+O followed by Enter, and then Ctrl+X.

Finally, to initiate the stress test across the specified websites, execute the following command:

siege -f /etc/siege/urls.txt

Additional Siege Commands on Ubuntu

Siege is not only about bombarding your servers with requests; it’s a versatile tool that provides many options, allowing you to customize your testing approach. From controlling the number of concurrent users to adjusting the delay between each request, Siege’s command options let you model various scenarios. This section will familiarize you with additional Siege commands that can empower you to conduct more nuanced and granular testing.

Controlling Delay Between Requests with Siege

With Siege, you can introduce a delay between each user’s requests to simulate more realistic user behavior, ensuring that requests aren’t sent continuously without breaks. For instance, in the command below:

siege -c 50 -d 5

Siege is instructed to stress test the specified website with 50 concurrent users, introducing a delay of 5 seconds between each user’s requests.

Customizing HTTP Method and Headers with Siege

Siege allows you to customize your stress test’s HTTP method and headers. For example, you may wish to send a POST request with custom headers. The -H flag allows you to set custom headers while the --method option enables you to set the HTTP method. Here’s how you can use these options:

siege --method="POST" -H "Content-Type: application/json"

In the above command, we’re using the POST method and setting the Content-Type header to application/json for our requests.

Logging Results with Siege

You may want to log your stress test results for further analysis or record-keeping. Siege can write the test results to a log file with the -l option:

siege -l

This command tells Siege to log the results of the stress test. By default, Siege writes the logs to a file named siege.log in your home directory.

Closing Thoughts

In this guide, we walked through the installation of Siege on Ubuntu versions 24.04, 22.04, and 20.04 LTS, offering both the APT Package Manager method and the manual compilation route for those wanting the latest version. Remember, practicing with Siege can significantly enhance your web application’s resilience and performance by simulating real-world loads. My final piece of advice? Don’t hesitate to dive deeper into Siege’s configurations to tailor your testing scenarios closely to your actual user traffic patterns. It’s a robust tool that, when mastered, can provide insights crucial for scaling and improving your web services. So, give your apps the stress test they deserve and see where you stand. Happy testing!

Leave a Comment