# siege — HTTP-Lasttest auf der Kommandozeile

> Praxis-Guide zu Siege – mehrere gleichzeitige Nutzer simulieren, Webserver benchmarken, URL-Listen abarbeiten und detaillierte Performance-Berichte erzeugen.

Source: https://www.jpkc.com/db/cheatsheets/networking/siege/

<!-- PROSE:intro -->
Siege simuliert eine beliebige Anzahl gleichzeitiger Nutzer, die deinen Webserver belasten – ideal, um Engpässe vor dem nächsten Deployment zu entdecken. Mit einer einfachen URL oder einer URL-Liste misst das Tool Durchsatz, Antwortzeiten und Fehlerquoten und liefert am Ende eine kompakte Statistik. Ob du einen schnellen Benchmark oder einen realistischen Last-Test mit Pausen zwischen den Anfragen brauchst – Siege lässt sich über Flags und eine Konfigurationsdatei fein abstimmen.
<!-- PROSE:intro:end -->

## Grundlegende Nutzung

`siege <url>` — Startet einen Last-Test mit Standardeinstellungen (25 Nutzer, kein Zeitlimit).

```bash
siege http://localhost:8080/
```

`siege -c <users> -t <time> <url>` — Testet mit einer bestimmten Anzahl gleichzeitiger Nutzer und einer festen Dauer.

```bash
siege -c 50 -t 30S http://localhost:8080/
```

`siege -c <users> -r <reps> <url>` — Führt eine feste Anzahl von Wiederholungen pro Nutzer durch.

```bash
siege -c 25 -r 100 http://localhost:8080/
```

`siege -b <url>` — Benchmark-Modus: keine Verzögerung zwischen den Anfragen.

```bash
siege -b -c 50 -t 30S http://localhost:8080/
```

## URL-Dateien & mehrere URLs

`siege -f <file>` — Liest URLs aus einer Datei (eine pro Zeile).

```bash
siege -f urls.txt -c 25 -t 60S
```

`siege '<url1>' '<url2>' '<url3>'` — Testet mehrere URLs direkt auf der Kommandozeile.

```bash
siege 'http://localhost/' 'http://localhost/api' 'http://localhost/about'
```

`siege -i -f <file>` — Internet-Modus: wählt URLs zufällig aus der Datei aus.

```bash
siege -i -f urls.txt -c 50 -t 120S
```

## HTTP-Methoden & Daten

`siege -c <users> '<url> POST <data>'` — Sendet POST-Anfragen mit Daten.

```bash
siege -c 10 'http://localhost/api POST {"name":"test"}'
```

`siege -H 'Content-Type: application/json' '<url> POST <data>'` — POST mit JSON-Content-Type-Header.

```bash
siege -H 'Content-Type: application/json' -c 10 'http://localhost/api POST {"key":"value"}'
```

`siege -H '<header>' <url>` — Fügt einen eigenen HTTP-Header hinzu.

```bash
siege -H 'Authorization: Bearer token123' -c 25 http://localhost/api
```

`siege -A '<user-agent>' <url>` — Setzt einen eigenen User-Agent-String.

```bash
siege -A 'Mozilla/5.0 LoadTest' -c 25 http://localhost/
```

## Zeitsteuerung & Verzögerungen

`siege -d <seconds> <url>` — Setzt eine zufällige Verzögerung zwischen 0 und N Sekunden pro Anfrage.

```bash
siege -d 5 -c 50 http://localhost:8080/
```

`siege -b -t <time> <url>` — Benchmark: keine Verzögerung, maximaler Durchsatz-Test.

```bash
siege -b -t 60S -c 100 http://localhost:8080/
```

`siege -t 1M <url>` — Läuft die angegebene Zeit (S=Sekunden, M=Minuten, H=Stunden).

```bash
siege -t 5M -c 50 http://localhost:8080/
```

## Protokollierung & Ausgabe

`siege -v <url>` — Ausführlicher Modus: zeigt jede einzelne Transaktion an.

```bash
siege -v -c 5 -r 10 http://localhost:8080/
```

`siege --log=<file> <url>` — Speichert die Ergebnisse in einer bestimmten Datei.

```bash
siege --log=siege.log -c 50 -t 60S http://localhost:8080/
```

`siege -m '<message>' <url>` — Fügt einen Label-Kommentar zum Log-Eintrag hinzu.

```bash
siege -m 'v2.0 release test' -c 50 -t 60S http://localhost:8080/
```

`siege --json-output <url>` — Gibt die Ergebnisse im JSON-Format aus.

```bash
siege --json-output -b -c 50 -t 30S http://localhost:8080/
```

## Konfiguration

`siege.config` — Erstellt eine Standard-.siegerc-Konfigurationsdatei.

```bash
siege.config
```

`siege -R <file> <url>` — Nutzt eine bestimmte Konfigurationsdatei.

```bash
siege -R /path/to/.siegerc -c 50 http://localhost:8080/
```

`siege -C` — Zeigt die aktuelle Konfiguration an.

```bash
siege -C
```

<!-- PROSE:outro -->
## Fazit

Siege ist der direkteste Weg, um zu prüfen, ob dein Webserver echte Last verträgt. Starte mit einem kurzen Benchmark-Lauf, verfeinere die Szenarien mit einer URL-Liste und protokolliere jede Testreihe mit `-m`, bevor du in Produktion deployest – so findest du Engpässe, bevor deine Nutzer sie finden.

## Weiterführende Links

- [Siege – Benutzerhandbuch](https://www.joedog.org/siege-manual/) – vollständige Referenz aller Optionen und Konfigurationsparameter (englisch)
- [Siege – GitHub](https://github.com/JoeDog/siege) – Quellcode, Changelog und Issue-Tracker (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [ab](https://www.jpkc.com/db/cheatsheets/networking/ab/) – Apache-eigenes Tool für schnelle HTTP-Benchmarks
- [wrk](https://www.jpkc.com/db/cheatsheets/networking/wrk/) – modernes HTTP-Benchmarking-Tool mit Lua-Scripting
- [h2load](https://www.jpkc.com/db/cheatsheets/networking/h2load/) – Last-Tests für HTTP/2- und HTTP/3-Server

