ConfigsMay 9, 2026·3 min read

bombardier — Fast Cross-Platform HTTP Benchmarking Tool

A high-performance HTTP benchmarking utility written in Go that supports HTTP/1.x and HTTP/2, with detailed latency statistics and configurable load patterns.

Introduction

bombardier is a fast cross-platform HTTP benchmarking tool written in Go. It saturates a target URL with configurable concurrency and duration, then reports throughput, latency percentiles, and error rates in a clean terminal output.

What bombardier Does

  • Generates high-concurrency HTTP load with minimal client-side overhead
  • Supports both duration-based and request-count-based benchmarks
  • Reports latency percentiles (p50, p75, p90, p95, p99) and average RPS
  • Handles HTTP/1.1 and HTTP/2 connections
  • Prints a real-time progress bar with live throughput during the test

Architecture Overview

bombardier spawns a pool of goroutines, each maintaining a persistent HTTP connection to the target. It uses Go's built-in net/http client with configurable timeouts and TLS settings. Each goroutine fires requests in a tight loop, recording latency in a lock-free histogram. At the end of the run, the main routine aggregates the histogram into percentile statistics and computes throughput.

Self-Hosting & Configuration

  • Install via go install, Homebrew, or download static binaries from GitHub releases
  • Set concurrency with -c and duration with -d (e.g., -c 100 -d 30s)
  • Add custom headers with -H and set the HTTP method with -m (GET, POST, PUT, etc.)
  • Supply a request body with -b for POST/PUT benchmarks
  • Use --http2 to force HTTP/2 connections

Key Features

  • Single static binary with no runtime dependencies
  • Real-time throughput and latency display during benchmarks
  • Detailed percentile latency distribution in the final report
  • Cross-platform: runs on Linux, macOS, and Windows
  • Low resource footprint on the client side even at high concurrency

Comparison with Similar Tools

  • wrk — C-based benchmarker with Lua scripting; bombardier is simpler to install and cross-platform
  • hey — similar Go-based tool; bombardier adds a real-time progress bar and HTTP/2 support
  • ab (Apache Bench) — classic but single-threaded; bombardier uses goroutines for higher throughput
  • vegeta — constant-rate load testing with rich reporting; bombardier focuses on max-throughput saturation
  • k6 — full load-testing framework with scripting; bombardier is a lightweight single-command tool

FAQ

Q: What is the difference between -d and -n modes? A: -d runs for a fixed duration (e.g., 30s), while -n sends an exact number of requests regardless of time.

Q: Does bombardier support HTTPS? A: Yes. It handles TLS automatically. Use -k to skip certificate verification for self-signed certs.

Q: Can I send POST requests with a body? A: Yes. Use -m POST -b '{"key":"value"}' -H "Content-Type: application/json" to benchmark POST endpoints.

Q: How does it compare to wrk for raw throughput? A: wrk can achieve slightly higher RPS due to C and epoll, but bombardier is within the same order of magnitude and far easier to build and distribute.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets