siege: Usage, Options & Common CI Errors
siege hammers a URL (or a list) with concurrent simulated users.
siege simulates many concurrent users hitting one or more URLs. In CI its useful signal is the Availability percentage, which you can gate on, but the default config file can surprise you.
What it does
siege runs -c concurrent users against a URL or a file of URLs, for a number of repetitions (-r) or a time (-t), and reports transactions, availability, and response time. -b (benchmark) removes the inter-request delay for max throughput.
Common usage
siege -c 50 -r 20 https://example.com/
siege -c 100 -t 30S https://example.com/ # 30 seconds (note S)
siege -b -c 25 -r 100 https://example.com/ # benchmark mode
siege -f urls.txt -c 30 -t 1M # list of URLs
siege -c 20 -t 10S --no-parser https://api/xOptions
| Flag | What it does |
|---|---|
| -c <N> | Concurrent users |
| -r <N> | Repetitions per user |
| -t <NUM>S|M|H | Time limit (unit letter required) |
| -b | Benchmark: no delay between requests |
| -f <file> | Read URLs from a file |
| -q / --no-parser | Quiet / skip HTML parsing of responses |
Common errors in CI
"[error] socket: unable to connect ... Connection refused" means the target is down. "[alert] socket: read error Connection reset by peer" usually means the server hit its connection limit. The -t unit letter is required: -t 30S (seconds), -t 1M (minutes) - bare -t 30 is invalid. siege exits 0 even with failed transactions; gate on the "Availability: X %" and "Failed transactions" lines. At high -c you can hit "Too many open files"; raise ulimit -n. siege reads ~/.siege/siege.conf, which can override flags.