How to Install and Use Bombardier in Linux for Fast HTTP Microservice Benchmarking and Stress Testing

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

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.