Tool-Reviews

HTTP-Benchmark-Tools: wrk, hey, oha, ab und weitere

7 Min. Lesezeit

Die HTTP-Benchmark-Tools für die Kommandozeile, zu denen die meisten Teams greifen, sind wrk, wrk2, hey, oha, ab (Apache Bench), bombardier, autocannon und h2load. Nehmen Sie wrk2, wenn Sie eine konstante Anfragerate und ehrliche Tail-Latenzen brauchen, hey oder oha für einen schnellen Check, der auch HTTP/2 spricht, h2load, wenn HTTP/2 oder HTTP/3 selbst auf dem Prüfstand steht, und autocannon, wenn Ihr Team mit Node.js arbeitet.

Wir haben die Tools nicht gegeneinander antreten lassen, deshalb finden Sie hier weder Geschwindigkeitswerte noch ein Urteil über das „schnellste“ Tool. Die Fakten stammen aus dem Repository, dem Handbuch oder der Release-Seite des jeweiligen Projekts (geprüft am 9. Oktober 2026); die Empfehlungen, wann welches Tool passt, sind unsere Einschätzung.

ToolGeschrieben inLizenzRatensteuerungHTTP/2Letztes Release
wrkC, LuaJIT-SkripteModified Apache 2.0KeineNicht dokumentiertTag 4.2.0, Feb. 2021
wrk2CApache 2.0Konstant (-R)Nicht dokumentiertKeines, letzter Commit Sep. 2019
heyGoApache 2.0Limit pro Worker (-q)Jav0.1.5, Jan. 2026
ohaRustMITGesamtlimit (-q)Ja, dazu HTTP/3v1.16.0, Aug. 2026
abC (Apache httpd)Apache 2.0KeineNeinhttpd 2.4.69, Okt. 2026
bombardierGoMITLimit (-r)Jav2.0.2, März 2025
autocannonNode.jsMITLimit (-R)Neinv8.0.0, Okt. 2024
h2loadC++ (nghttp2)MITPro Client (--rps)Ja, dazu HTTP/3nghttp2 v1.70.0, Juli 2026
VegetaGoMITKonstant (-rate)Jav12.13.0, Okt. 2025

Warum ist es wichtig, ob ein Tool die Rate festhält?

Ein Tool mit einer festen Zahl von Verbindungen sendet weniger, sobald der Server langsamer wird, und seine Latenzwerte lassen dann die Zeit weg, die Anfragen mit Warten verbracht haben. Ein Tool mit fester Rate sendet nach Plan weiter, und die Verlangsamung zeigt sich in den Perzentilen.

Die meisten Tools hier arbeiten mit einer festen Zahl von Verbindungen oder Workern (-c), die jeweils auf eine Antwort warten, bevor sie weitersenden. Die README von wrk2 nennt diesen blinden Fleck Coordinated Omission und misst jede Anfrage ab dem Zeitpunkt, zu dem sie hätte gesendet werden sollen. Auch Vegeta hält eine konstante Rate; mehr dazu in unserem Überblick über Open-Source-Lasttest-Tools. oha und autocannon können ihre Latenzwerte um denselben Effekt korrigieren, wenn eine Rate gesetzt ist, während hey und bombardier ihre Ratenoptionen nur als Obergrenzen dokumentieren.

Lohnt sich wrk noch?

Ja, für einen schnellen Blick darauf, wie viel Last ein einzelner Rechner auf einen Endpunkt bringen kann, gelesen mit dem Vorbehalt von oben. Der neueste Tag stammt vom Februar 2021.

wrk ist in C geschrieben und hält über mehrere Threads eine feste Zahl von Verbindungen offen. Optionale LuaJIT-Skripte können Anfragen bauen, Antworten verarbeiten und eigene Berichte schreiben, und make baut das Tool zusammen mit dem mitgelieferten LuaJIT und OpenSSL. Ausgegeben werden Mittelwert, Standardabweichung und Maximum der Latenz; --latency ergänzt das 50., 75., 90. und 99. Perzentil.

Wählen Sie stattdessen wrk2, wenn Sie eine feste Anfragerate brauchen oder Tail-Latenzen, denen Sie auch bei einer Verlangsamung trauen können.

Wann brauchen Sie wrk2 statt wrk?

Wenn die Frage lautet, wie sich die Latenz bei einer bestimmten Anfragerate verhält. wrk2 hält diese Rate konstant und erfasst jede Latenz in einem HdrHistogram.

wrk2 ergänzt wrk um ein Durchsatz-Argument (-R, Anfragen pro Sekunde). --latency gibt das vollständige Perzentilspektrum aus, --u_latency ergänzt zum Vergleich die unkorrigierten Werte. Die README warnt, dass Läufe unter 10 bis 20 Sekunden wegen einer 10-sekündigen Kalibrierungsphase wenig aussagen können, und bezeichnet das Projekt als experimentell. Releases gibt es keine, und das Makefile baut ein Binary, das ebenfalls wrk heißt; halten Sie die beiden also auseinander.

Wählen Sie stattdessen oha oder autocannon, wenn Sie eine Ratenoption mit Latenzkorrektur aus einem Projekt wollen, das noch gepflegt wird.

Sind hey und oha austauschbar?

Für schnelle Checks weitgehend: Beide lassen einen Pool von Workern für eine Anzahl Anfragen oder eine feste Dauer laufen, und beide sprechen HTTP/2. Sie unterscheiden sich bei der Ratenbegrenzung und darin, was Sie während eines Laufs sehen.

hey ist ein kleines Go-Programm mit fertigen Binaries für Linux, macOS und Windows und einer Homebrew-Formel. -q begrenzt die Anfragen pro Sekunde für jeden Worker, -h2 schaltet HTTP/2 ein, und die Zusammenfassung enthält ein Antwortzeit-Histogramm und eine Latenzverteilung, mit -o csv auch als CSV.

oha ist in Rust geschrieben, von hey inspiriert und zeigt eine Live-Oberfläche im Terminal. Sein -q setzt eine Gesamtrate, --latency-correction korrigiert um Coordinated Omission, und --http-version akzeptiert 1.1, 2 und in einem experimentellen Build auch 3. Installiert wird es über cargo, Homebrew, winget oder pacman, und es kann JSON oder CSV schreiben.

Wählen Sie stattdessen hey, wenn ein Limit pro Worker zu Ihrer Vorstellung von Last passt; wählen Sie oha für HTTP/3, JSON oder Latenzkorrektur.

Sollten Sie ab noch verwenden?

Für einen schnellen Check auf einem Rechner, auf dem es schon installiert ist, ja. ab wird mit dem Apache HTTP Server ausgeliefert, und sein eigenes Handbuch nennt bekannte Grenzen.

ab nimmt eine Anzahl Anfragen (-n) und eine Nebenläufigkeit (-c) entgegen, hat keine Option für eine Rate oder für HTTP/2 und nutzt KeepAlive nur mit -k. Die Ausgabe endet mit dem Anteil der Anfragen, die innerhalb einer bestimmten Zeit beantwortet wurden; diese Anteile schreibt ab auf Wunsch als CSV (-e), jede einzelne Messung als gnuplot-Datei (-g). Der Abschnitt „Bugs“ im Handbuch sagt, dass ab HTTP/1.x nicht vollständig implementiert, und warnt, dass Sie wegen des aufwendigen String-Parsings womöglich die Leistung von ab selbst messen.

Wählen Sie stattdessen hey oder oha, wenn Sie HTTP/2, ein Ratenlimit oder standardmäßig Keep-Alive brauchen.

Wofür eignen sich bombardier und autocannon?

bombardier ist ein Go-Tool mit optionalem HTTP/2 und Ratenlimit. autocannon passt zu Node.js-Teams, weil es auch als Bibliothek in einem Node-Skript läuft.

bombardier nutzt standardmäßig den fasthttp-Client und wechselt mit --http1 oder --http2 zum net/http-Client von Go. -r setzt ein Ratenlimit, -l gibt das 50., 75., 90. und 99. Perzentil aus, und -o json macht das Ergebnis maschinenlesbar.

autocannon beschreibt sich als HTTP/1.1-Tool mit Pipelining und HTTPS und wird mit npm i autocannon -g installiert. -R begrenzt die Gesamtrate, -r die Rate pro Verbindung, und sobald eine davon gesetzt ist, wird die Latenz um Coordinated Omission korrigiert. Die Tabelle zeigt das 2,5., 50., 97,5. und 99. Perzentil, -l gibt alle aus und -j schreibt JSON.

Wählen Sie autocannon statt bombardier, wenn Ihre Benchmarks in einer Node.js-Testsuite leben, und bombardier, wenn Sie HTTP/2 brauchen.

Welches Tool ist für HTTP/2 und HTTP/3 gebaut?

h2load. Es stammt aus dem nghttp2-Projekt, bevorzugt HTTP/2 und kann HTTP/1.1 erzwingen oder, wenn mit Unterstützung gebaut, HTTP/3.

h2load wird zusammen mit nghttp2 kompiliert, wenn Sie ./configure die Option --enable-app mitgeben. Neben der Zahl der Clients (-c) legt es die gleichzeitigen Streams pro Client fest (-m), um Multiplexing unter Last zu prüfen, und --rps setzt die Anfragen pro Sekunde für jeden Client. Das Handbuch nennt Minimum, Maximum, Mittelwert, Median, p95 und p99 für Anfragezeit, Verbindungsaufbau und Zeit bis zum ersten Byte. Die HTTP/3-Unterstützung ist als experimentell gekennzeichnet.

Wählen Sie stattdessen oha, wenn Sie HTTP/2 mit weniger Optionen und einer Live-Ansicht wollen.

Wann sollten Sie vom Benchmark zu einem echten Lasttest wechseln?

Wenn es um Nutzerabläufe geht, um mehr Last, als ein Rechner erzeugen kann, oder um Traffic von dort, wo Ihre Nutzer sind.

Jedes Tool hier schickt einfache Anfragen von einem einzigen Rechner, und die h2load-Anleitung weist darauf hin, dass der Client selbst zum Engpass werden kann. Wechseln Sie zu einem Lasttest-Tool, wenn Sie Logins, mehrstufige Abläufe oder Think Time brauchen, wenn der Traffic aus mehreren Regionen kommen muss oder wenn ein Test in der CI bestehen oder scheitern soll. Unsere Anleitung Lasttest durchführen geht das Schritt für Schritt durch, und k6 vs Artillery vergleicht zwei skriptbare Tools.

LoadFocus, der Herausgeber dieser Website, führt Lasttests für Websites und APIs aus 25 Cloud-Regionen aus, mit JMeter, k6 oder No-Code-Tests. Wenn Ihr Benchmark eine Anfrage ist, die Sie ohnehin mit curl senden, macht der kostenlose cURL-zu-k6-Konverter daraus direkt im Browser ein k6-Skript.

FAQ

Was ist der Unterschied zwischen wrk und wrk2? wrk2 ist ein Fork von wrk, der Anfragen mit einer konstanten, per -R gesetzten Rate sendet und jede Anfrage ab dem Zeitpunkt misst, zu dem sie hätte gesendet werden sollen. wrk hält eine feste Zahl von Verbindungen beschäftigt und hat keine Ratenoption.

Welche HTTP-Benchmark-Tools unterstützen HTTP/2? Laut ihrer Dokumentation hey, oha, bombardier, h2load und Vegeta. wrk und wrk2 dokumentieren es nicht, autocannon beschreibt sich als HTTP/1.1-Tool, und ab hat keine HTTP/2-Option.

Weiterlesen


Die technischen Aussagen in diesem Artikel wurden nicht unabhängig geprüft.

LoadFocus team
Geschrieben vom LoadFocus-Team, den Leuten hinter einem Cloud-Lasttest-Dienst.