When benchmarking web servers, load balancers, and backend microservices under heavy load, legacy utilities like ApacheBench (ab) frequently bottleneck on client-side CPU resource limits and lack native support for modern HTTP/2 protocol pipelines. While complex distributed testing suites like JMeter exist, developers often need an ultra-fast, single-binary command-line benchmarking tool that can saturate high-throughput connections with minimal overhead.
Bombardier is an open-source HTTP benchmarking tool written entirely in Go. Designed for exceptional concurrency and speed, Bombardier utilizes the high-performance fasthttp engine alongside standard net/http drivers to generate tens of thousands of requests per second from a single Linux shell. This guide covers installation, command-line arguments, rate limiting, and output metrics interpretation.
Installing Bombardier on Linux
Method 1: Download Official Pre-Compiled Binary
# Download latest release from GitHub
curl -s https://api.github.com/repos/codesenberg/bombardier/releases/latest \
| grep "browser_download_url.*linux-amd64" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
# Make executable and move to system PATH
chmod +x bombardier-linux-amd64
sudo mv bombardier-linux-amd64 /usr/local/bin/bombardier
Method 2: Install via Go
go install github.com/codesenberg/bombardier@latest
Executing Benchmarking Tests
1. Basic Concurrency and Duration Test
To run a 15-second benchmark using 100 concurrent connection workers against an API endpoint:
bombardier -c 100 -d 15s http://127.0.0.1:8080/api/v1/health
2. Limiting Maximum Request Count
Instead of a duration threshold, execute exactly 50,000 requests spread across 50 concurrent connections:
bombardier -c 50 -n 50000 http://127.0.0.1:8080/api/v1/users
3. Benchmarking POST Requests with JSON Payloads
To test database write performance using HTTP POST with custom headers:
bombardier -c 25 -d 20s \
-m POST \
-H "Content-Type: application/json" \
-f /path/to/payload.json \
http://127.0.0.1:8080/api/v1/orders
Interpreting Bombardier Benchmark Output
Bombardier prints a comprehensive statistical summary directly to the terminal:
| Metric Field | Description | Key Performance Indicator |
|---|---|---|
| Reqs/sec | Average requests completed per second | Measures maximum server throughput capability |
| Latency 99% | 99th percentile response duration | Detects tail latency and garbage-collection pauses |
| HTTP codes | Breakdown of 2xx, 3xx, 4xx, 5xx responses | Confirms if servers returned errors under load |
| Throughput | Total megabytes transmitted and received | Identifies network interface card (NIC) saturation |