A constant throughput HTTP benchmarking tool with accurate latency measurement using HdrHistogram to avoid coordinated omission.
wrk2 is a specialized HTTP benchmarking tool that generates constant throughput load while providing accurate latency measurements. It solves the problem of coordinated omission—where traditional load generators miss high-latency events by waiting for slow responses before sending new requests. By measuring latency from when requests should have been sent according to a constant rate plan, wrk2 reveals true server performance characteristics.
Performance engineers, DevOps professionals, and backend developers who need accurate latency measurements for HTTP services under consistent load. It's particularly valuable for teams diagnosing tail latency issues or validating service-level objectives (SLOs).
Developers choose wrk2 over other benchmarking tools because it provides mathematically correct latency measurements that account for coordinated omission. Unlike wrk and similar tools that can dramatically underreport high percentiles during server slowdowns, wrk2's constant throughput approach with HdrHistogram recording ensures latency distributions reflect actual user experience.
A constant throughput, correct latency recording variant of wrk
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses HdrHistogram for lossless recording and corrects coordinated omission, providing true latency percentiles up to 99.9999%, as demonstrated in the README's comparison of corrected vs. uncorrected distributions.
Allows precise setting of requests per second with the --rate parameter, enabling consistent and reproducible load testing for performance validation.
With the --latency flag, it outputs comprehensive percentile spectra in a format suitable for analysis and plotting, helping identify tail latency issues.
Maintains full compatibility with wrk's Lua API for custom request generation and response processing, though complex scripts may reduce load capacity.
Requires a 10-second calibration phase, making tests shorter than 10-20 seconds potentially uninformative, as admitted in the README's basic usage section.
Designed only for constant throughput generation, so it cannot simulate realistic variable or stochastic traffic patterns without manual scripting workarounds.
Latency measurements are accurate to +/- ~1 msec due to OS sleep behavior, limiting precision for sub-millisecond latencies in high-performance scenarios.