Siege

Outil de test de charge et de stress HTTP/HTTPS qui simule des utilisateurs concurrents sollicitant une ou plusieurs URL pour tester la performance d'un serveur web sous charge. HTTP/HTTPS load and stress-testing tool that simulates concurrent users hitting one or more URLs to test web server performance under load.

↗ https://www.joedog.org/siege-home/

Overview

Siege is an HTTP/HTTPS benchmarking and stress-testing tool that simulates multiple concurrent users hammering a URL or list of URLs, reporting response times, throughput, and failure rates. On assessments it’s mainly used to check how an application or its rate-limiting/WAF behaves under concurrent load — useful for basic DoS-resilience checks and for confirming whether a login/API endpoint enforces any throttling at all.

Common Usage

50 concurrent simulated users, each firing 10 requests, against one URL

siege -c 50 -r 10 https://<target>/

Run for a fixed duration instead of a fixed rep count

siege -c 25 -t 1M https://<target>/

Hit a list of URLs, in random order, with a random delay between requests

siege -f urls.txt -c 20 -d 5 -i

Benchmark mode — no delay between requests, maximum stress

siege -c 100 -r 20 -b https://<target>/api/login

Single verbose request for debugging headers/response

siege -g https://<target>/
# urls.txt format — one URL per line, optional POST body
https://target/login POST username=admin&password=test
https://target/search?q=test

Tips

  • -i (internet mode) randomizes request order across the URL file, better simulating real traffic patterns than sequential replay
  • Watch the “Failed transactions” count in the summary — a rising failure rate under load often flags a WAF/rate-limit kicking in, which is useful signal on its own
  • ~/.siegerc holds persistent defaults (timeout, user-agent, logging) so you don’t have to repeat flags every run
Help / Man page
SIEGE 4.x
Usage: siege [options]
       siege [options] URL
       siege -f <file>

Options:
  -c, --concurrent=NUM     number of simulated concurrent users
  -r, --reps=NUM            number of times each user repeats the URL(s)
  -t, --time=NUMm|NUMh       run for a fixed duration instead of reps
  -d, --delay=NUM           max random delay (seconds) between requests
  -f, --file=FILE            read URLs from FILE
  -i, --internet             hit URLs in random order (simulate real traffic)
  -b, --benchmark             no delay between requests, maximum throughput
  -g, --get                  perform a single GET/HEAD, print headers, exit
  -v, --verbose               show request results as they happen
  -q, --quiet                 suppress verbose output

Vue d’ensemble

Siege est un outil de benchmark et de stress-test HTTP/HTTPS qui simule plusieurs utilisateurs concurrents martelant une URL ou une liste d’URL, en rapportant les temps de réponse, le débit et les taux d’échec. En mission, il sert principalement à vérifier comment une application ou son rate-limiting/WAF se comporte sous charge concurrente : utile pour des vérifications basiques de résilience au DoS et pour confirmer si un endpoint de connexion/API applique un quelconque throttling.

Utilisation courante

# 50 utilisateurs simulés concurrents, chacun envoyant 10 requêtes, contre une URL
siege -c 50 -r 10 https://<target>/

# Lancer pour une durée fixe plutôt qu'un nombre de répétitions fixe
siege -c 25 -t 1M https://<target>/

# Solliciter une liste d'URL, dans un ordre aléatoire, avec un délai aléatoire entre les requêtes
siege -f urls.txt -c 20 -d 5 -i

# Mode benchmark : pas de délai entre les requêtes, stress maximal
siege -c 100 -r 20 -b https://<target>/api/login

# Requête verbeuse unique pour déboguer les en-têtes/la réponse
siege -g https://<target>/
# Format urls.txt : une URL par ligne, corps POST optionnel
https://target/login POST username=admin&password=test
https://target/search?q=test

Conseils

  • -i (mode internet) randomise l’ordre des requêtes dans le fichier d’URL, ce qui simule mieux des motifs de trafic réels qu’une relecture séquentielle
  • Surveiller le compteur “Failed transactions” dans le résumé : un taux d’échec croissant sous charge signale souvent un WAF/rate-limit qui se déclenche, ce qui est un signal utile en soi
  • ~/.siegerc contient des valeurs par défaut persistantes (timeout, user-agent, logging) pour ne pas répéter les flags à chaque exécution
Aide / Page de manuel
SIEGE 4.x
Usage: siege [options]
       siege [options] URL
       siege -f <file>

Options:
  -c, --concurrent=NUM     number of simulated concurrent users
  -r, --reps=NUM            number of times each user repeats the URL(s)
  -t, --time=NUMm|NUMh       run for a fixed duration instead of reps
  -d, --delay=NUM           max random delay (seconds) between requests
  -f, --file=FILE            read URLs from FILE
  -i, --internet             hit URLs in random order (simulate real traffic)
  -b, --benchmark             no delay between requests, maximum throughput
  -g, --get                  perform a single GET/HEAD, print headers, exit
  -v, --verbose               show request results as they happen
  -q, --quiet                 suppress verbose output