Cette page est affichée en anglais. Une traduction française est en cours.
ConfigsMay 9, 2026·3 min de lecture

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

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires