wrk
wrk copied to clipboard
Modern HTTP benchmarking tool
wrk - a HTTP benchmarking tool
wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue.
Basic Usage
wrk -k -t8 -c400 -r10m http://localhost:8080/index.html
This runs wrk with 8 threads, keeping 400 connections open, and making a total of 10 million HTTP GET requests to http://localhost:8080/index.html
Output:
Making 10000000 requests to http://localhost:8080/index.html 8 threads and 400 connections Completed 2516980 requests Completed 5033960 requests Completed 7550940 requests Thread Stats Avg Stdev Max +/- Stdev Latency 439.75us 350.49us 7.60ms 92.88% Req/Sec 61.13k 8.26k 72.00k 87.54% 10000088 requests, 100222 sock connections in 19.87s, 3.42GB read Requests/sec: 503396.23 Transfer/sec: 176.16MB
Benchmarking Tips
The machine running wrk must have a sufficient number of ephemeral ports available and closed sockets should be recycled quickly, especially when HTTP/1.1 keep-alive is disabled. To handle the initial connection burst the server's listen(2) backlog should be greater than the number of concurrent connections being tested.
Acknowledgements
wrk contains code from a number of open source projects including the 'ae' event loop from redis, the nginx/joyent/node.js 'http-parser' and the Tiny Mersenne Twister PRNG. Please consult the NOTICE file for licensing details.