| 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 -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 |
| 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 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. 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. |