Go Other
Clone or download
codesenberg all: bump commit
Bump commit date for v1.2 tag, so that people don't get confused
about which version is latest as seen in #36.
Latest commit b75865b Jun 29, 2018
Permalink
Failed to load latest commit information.
.github docs: move issue and pull request templates to .github folder Nov 28, 2017
cmd/utils/simplebenchserver all: migrate to kingpin, add more tests, sort errors by frequency Feb 19, 2017
docs docs: add contribution guidelines Nov 28, 2017
internal feature: user-defined + 2 built-in output formats Feb 22, 2018
template doc: fix link to examples Feb 22, 2018
vendor vendor: update versions of histograms Mar 14, 2018
.gitignore This commit adds some tests Jul 17, 2016
LICENSE This is pretty much v0.2. Jun 20, 2016
README.md testing: switch from Travis to Semaphore Feb 2, 2018
args_parser.go feature: user-defined + 2 built-in output formats Feb 22, 2018
args_parser_test.go feature: user-defined + 2 built-in output formats Feb 22, 2018
bombardier.go feature: user-defined + 2 built-in output formats Feb 22, 2018
bombardier_performance_test.go feature: switchable HTTP client + HTTP/2.x support May 4, 2017
bombardier_test.go feature: user-defined + 2 built-in output formats Feb 22, 2018
build-all.bash all: add build scripts and version printing Feb 28, 2017
build-all.bat all: add build scripts and version printing Feb 28, 2017
client_cert.go all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017
client_cert_test.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
clients.go clients: set ContentLength explicitly Apr 10, 2018
clients_test.go enhancement: replace current stats implementation Nov 22, 2017
common.go feature: flag to control what to output Feb 2, 2018
completion_barriers.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
completion_barriers_test.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
config.go feature: user-defined + 2 built-in output formats Feb 22, 2018
config_test.go feature: user-defined + 2 built-in output formats Feb 22, 2018
dialer.go feature: switchable HTTP client + HTTP/2.x support May 4, 2017
doc.go feature: user-defined + 2 built-in output formats Feb 22, 2018
error_map.go all: migrate to kingpin, add more tests, sort errors by frequency Feb 19, 2017
error_map_test.go all: migrate to kingpin, add more tests, sort errors by frequency Feb 19, 2017
flags.go feature: flag to control what to output Feb 2, 2018
flags_test.go feature: flag to control what to output Feb 2, 2018
format.go This commit adds some tests Jul 17, 2016
format_test.go all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017
headers.go feature: switchable HTTP client + HTTP/2.x support May 4, 2017
headers_test.go feature: switchable HTTP client + HTTP/2.x support May 4, 2017
limiter.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
limiter_barrier_test.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
limiter_test.go fix: an attempt to make tests less flaky on Travis Feb 2, 2018
proxy_reader.go feature: body streaming Nov 9, 2017
rateestimator.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
rateestimator_test.go all: add rate limiting feature, refactor a bit and fix rounding errors Mar 4, 2017
templates.go feature: 95th percentile in latency statistics Mar 16, 2018
testbody.txt feature: body from file Oct 31, 2017
testclient.cert all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017
testclient.key all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017
testserver.cert all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017
testserver.key all: add few benchmarks, tests, doc, utils and polish things a bit Feb 1, 2017

README.md

bombardier Build Status Go Report Card GoDoc Coverage

bombardier is a HTTP(S) benchmarking tool. It is written in Go programming language and uses excellent fasthttp instead of Go's default http library, because of its lightning fast performance.

With bombardier v1.1 and higher you can now use net/http client if you need to test HTTP/2.x services or want to use a more RFC-compliant HTTP client.

Tested on go1.8 and higher.

Installation

You can grab binaries in the releases section. Alternatively, to get latest and greatest run:

go get -u github.com/codesenberg/bombardier

Usage

bombardier [<flags>] <url>

For a more detailed information about flags consult GoDoc.

Known issues

AFAIK, it's impossible to pass Host header correctly with fasthttp, you can use net/http(--http1/--http2 flags) to workaround this issue.

Examples

Example of running bombardier against this server:

> bombardier -c 125 -n 10000000 http://localhost:8080
Bombarding http://localhost:8080 with 10000000 requests using 125 connections
 10000000 / 10000000 [============================================] 100.00% 37s Done!
Statistics        Avg      Stdev        Max
  Reqs/sec    264560.00   10733.06     268434
  Latency      471.00us   522.34us    51.00ms
  HTTP codes:
    1xx - 0, 2xx - 10000000, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:   292.92MB/s

Or, against a realworld server(with latency distribution):

> bombardier -c 200 -d 10s -l http://ya.ru
Bombarding http://ya.ru for 10s using 200 connections
[=========================================================================] 10s Done!
Statistics        Avg      Stdev        Max
  Reqs/sec      6607.00     524.56       7109
  Latency       29.86ms     5.36ms   305.02ms
  Latency Distribution
     50%    28.00ms
     75%    32.00ms
     90%    34.00ms
     99%    48.00ms
  HTTP codes:
    1xx - 0, 2xx - 0, 3xx - 66561, 4xx - 0, 5xx - 0
    others - 5
  Errors:
    dialing to the given TCP address timed out - 5
  Throughput:     3.06MB/s