Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
HTTP(S) Benchmark Tools / Toolkit for testing/debugging HTTP(S) and restAPI (RESTful)

Moved to git-repository: https://github.com/denji/awesome-http-benchmark

Tools

Located in alphabetical order (not prefer)

  • ab – slow and single threaded, written in C

  • apib – most of the features of ApacheBench (ab), also designed as a more modern replacement, written in C

  • autocannon – fast HTTP/1.1 benchmarking tool written in Node.js

  • baloo – Expressive end-to-end HTTP API testing made easy, written in Go (golang)

  • baton – HTTP load testing, written in Go (golang)

  • bombardier – Fast crossplatform HTTP benchmarking tool, written in Go (golang)

  • cassowary – is a modern HTTP(S), intuitive & cross-platform load testing tool, written in Go (golang)

  • curl-loader – performance loading of various application services and traffic generation, written in C

  • drill – Drill is a HTTP load testing application inspired by Ansible syntax, written in Rust

  • fasthttploader – benchmark (kinda ab) with autoadjustment and charts based on fasthttp library, written in Go (golang)

  • fbender – A load-testing command line tool for generic network protocols (HTTP, DNS, DHCP, …), written in Go (golang)

  • fortio – load testing library and command line tool and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats, written in Go (golang)

  • gatling – High performance load testing framework based on Scala, Akka and Netty, written in Scala

  • go-wrk – a HTTP benchmarking tool based in spirit on the excellent wrk tool (wg/wrk), written in Go (golang)

  • goad – Goad is an AWS Lambda powered, highly distributed, load testing tool, written in Go (golang)

  • gobench – HTTP/HTTPS load testing and benchmarking tool, written in Go (golang)

  • gohttpbenchab-like benchmark tool run on multi-core cpu, written in Go (golang)

  • goloris – Slowloris for NGINX DoS attack, written in Go (golang)

  • h2load - benchmarking tool for HTTP/2 and HTTP/1.1. It supports SSL/TLS and clear text for all supported protocols, written in C/C++

  • hey – HTTP(S) load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom, written in Go (golang)

  • htstress – multithreading high-load bechmarking services (>5K rps), written in C/Linux

  • httperf – difficult configuration, slow and single threaded, written in C

  • httping - Ping with HTTP requests, see http://www.vanheusden.com/httping/, written in C

  • inundator – A simple and high-throughput HTTP flood program, written in C/Linux

  • jmeter – Apache JMeter™, pure application designed to load test performance both on static and dynamic resources, written in Java

  • k6 - A modern load testing tool scriptable in ES6 JS with support for HTTP/1.1, HTTP/2.0 and WebSocket, written in Go (golang)

  • locust – easy-to-use, distributed load testing tool with real-time web UI. Simulates a swarm of concurrent users, the behavior of each of them is defined by your python code. Written in Python

  • lor-axe – A multi-threaded, low-bandwidth HTTP Slowloris DoS tool that handles connections and sockets in parallel, written in Rust

  • mgun – A modern tool for load testing HTTP servers, written in Go (golang)

  • pounce – evented, but results fluctuate, it's sometimes faster than htstress, written in C

  • siege – slow and single threaded, written in C

  • slapper – Simple load testing tool with real-time updated histogram of request timings, written in Go (golang)

  • slow_cooker – A load tester focused on lifecycle issues and long-running tests, service with a predictable load and concurrency level for a long period of time, written in Go (golang)

  • slowhttptest – Application Layer DoS attack simulator, written in C++

  • sniper – powerful & high-performance http load tester, written in Go (golang)

  • thrash – HTTP Micro Benchmarker, written in Go (golang)

  • tsung – Simulate stress users in order to test the scalability and performance of IP based client/server applications HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP servers, written in Erlang

  • vegeta – HTTP load testing tool and library, written in Go (golang)

  • weighttp – multithreaded, but slower than htstress without keepalive, written in C

  • welle – ab (Apache Benchmark) like tool, written in Rust

  • wrk – multithreaded, but doesn't offer concurrent connections and a keepalive switch, written in C/Lua

  • wrk2 – constant throughput, correct latency recording variant of wrk, written in C/Lua

      Concurrent connections are enabled with:
        -c, --connections <N>  Connections to keep open
      And keepalive (which is default) can be disabled using:
        -H "Connection: close"
    
  • yandex-tank – Load and performance benchmark tool, written in Python/C|C++|Asm (phantom)

Toolkit for testing/debugging HTTP(S) and restAPI (RESTful)

  • bat – Go implement CLI, cURL-like tool for humans, written in Go (golang)
  • curl – Powerful features command-line tool for transferring data specified with URL syntax, written in C
  • curlconverter – convert curl commands to python, javascript, php
  • httpie – client, user-friendly curl replacement with intuitive UI, JSON support, syntax highlighting, wget-like downloads, extensions, written in Python
    • curlie – If you like the interface of HTTPie but miss the features of curl, curlie is what you are searching for. Curlie is a drop-in replacement for httpie that use curl to perform operations, written in Go (golang)
  • jaggr – JSON Aggregation CLI, Jaggr can be used to integrate vegeta with jplot, written in Go (golang)
  • jq – is a lightweight and flexible command-line JSON processor, written in C
  • httpstat - It's like curl -v, with colours
  • postwoman - API request builder
  • Insomnia - simple, beautiful, and free Desktop REST API client (Mac, Windows, and Linux)

SaaS/PaaS

  • BlazeMeter – offers a cross-enterprise test automation framework for the entire technical team (developers, devops, ops and QA) throughout the product development lifecycle. Run continuous or ‘on demand’ testing for APIs, mobile apps and websites. Run from the cloud, on-premise or as a hybrid solution. Use with JMeter & Selenium WebDriver & integrate with your existing CI, CD & APM tools.
  • NewRelic – software analytics tool suite used by developers, ops, and software companies to understand how your applications are performing in development and production
  • NGINX Amplify – Visually identify performance bottlenecks, overloaded servers, or potential DDoS attacks. Improve and optimize NGINX performance with intelligent advice and recommendations. Get alerts when something is wrong with the delivery of your application. Plan capacity and performance for web applications. Keep track of systems running NGINX 1

Links

@RnbWd
Copy link

RnbWd commented Apr 18, 2015

vegeta is pretty cool

@Vanuan
Copy link

Vanuan commented Feb 11, 2016

http://newrelic.com/ is quite good too

@gstrauss
Copy link

gstrauss commented Feb 29, 2016

A fork of weighttp can be found at https://github.com/gstrauss/weighttp/tree/rewrite. This branch is at least as fast as pounce and htstress for the single-threaded, no-keep-alive case, and can be must faster when multiple threads, keep-alive and HTTP pipelining are enabled.

@hho
Copy link

hho commented Jun 8, 2016

Gatling is written in Scala

@melnikaite
Copy link

melnikaite commented Aug 11, 2016

@msaldivar1
Copy link

msaldivar1 commented Sep 2, 2016

@denji
Copy link
Author

denji commented Sep 3, 2016

@msaldivar1 It went beyond consideration of the HTTP benchmark/tools (browser based analyzers), but you can find here https://github.com/davidsonfellipe/awesome-wpo#analyzers

@origliante
Copy link

origliante commented May 15, 2017

What do you think about locust.io ?

@vladfr
Copy link

vladfr commented Feb 14, 2018

+1 for locust.io

@kirkins
Copy link

kirkins commented Feb 26, 2018

@Vanuan hey I remember you, you made the Ukrainian postal lookup for DuckDuckGo.

Here is another tool that might be good for the list https://github.com/tsenart/vegeta

(My mistake, already listed)

@serhiikartashov
Copy link

serhiikartashov commented Oct 5, 2019

flood.io - SaaS alternative of BlazeMeter

@PriyankPa
Copy link

PriyankPa commented Oct 22, 2019

I am looking for a simple replacement for apache bench which uses non-blocking IO instead of blocking IO with threads. Any suggestions?
I have looked at Gatling, it looks good. But I need a something simple that does not need writing scripts and can run from command line on a headless server.

More info:
Apache bench is unable to send beyond 14K requests per second. It is neither maxing out the CPU nor the bandwidth of the machine it is running on. It is definitely not maxing out the cluster (288 CPU Core Kubernetes Cluster). I guess it is because it has a limit of 1000 parallel threads which stay occupied till they receive a response.

@pavelnunez
Copy link

pavelnunez commented Jun 21, 2020

I think that you should include [Locust] (https://locust.io/). That would make this compilation better and more complete.

@robertkraig
Copy link

robertkraig commented Dec 3, 2020

https://k6.io/ should also be added to this.

@denji
Copy link
Author

denji commented Dec 3, 2020

@anime209
Copy link

anime209 commented Feb 23, 2021

is there benchmark tool which stop when cpu reach 100%

@jpolvora
Copy link

jpolvora commented Mar 6, 2021

what about https://artillery.io/
#run 10 parallel clients each one doing 60 calls at specified url
artillery quick
--count 10
--num 60
https://your-backend-url

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment