2017-02-05 13:43:13 +08:00
|
|
|
# wrk - a HTTP benchmarking tool
|
2012-03-18 14:16:09 +08:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2013-09-22 11:54:25 +08:00
|
|
|
An optional LuaJIT script can perform HTTP request generation, response
|
2015-02-07 16:03:17 +08:00
|
|
|
processing, and custom reporting. Details are available in SCRIPTING and
|
2017-02-05 13:43:13 +08:00
|
|
|
several examples are located in [scripts/](scripts/).
|
2013-08-18 19:37:21 +08:00
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
## Basic Usage
|
2012-03-18 14:16:09 +08:00
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
|
2012-03-18 14:16:09 +08:00
|
|
|
|
2013-05-24 11:00:12 +08:00
|
|
|
This runs a benchmark for 30 seconds, using 12 threads, and keeping
|
2013-04-10 19:53:30 +08:00
|
|
|
400 HTTP connections open.
|
2012-03-18 14:16:09 +08:00
|
|
|
|
|
|
|
Output:
|
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
Running 30s test @ http://127.0.0.1:8080/index.html
|
|
|
|
12 threads and 400 connections
|
|
|
|
Thread Stats Avg Stdev Max +/- Stdev
|
|
|
|
Latency 635.91us 0.89ms 12.92ms 93.69%
|
|
|
|
Req/Sec 56.20k 8.07k 62.00k 86.54%
|
|
|
|
22464657 requests in 30.00s, 17.76GB read
|
|
|
|
Requests/sec: 748868.53
|
|
|
|
Transfer/sec: 606.33MB
|
2012-03-18 14:16:09 +08:00
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
## Command Line Options
|
|
|
|
|
|
|
|
-c, --connections: total number of HTTP connections to keep open with
|
|
|
|
each thread handling N = connections/threads
|
|
|
|
|
|
|
|
-d, --duration: duration of the test, e.g. 2s, 2m, 2h
|
|
|
|
|
|
|
|
-t, --threads: total number of threads to use
|
|
|
|
|
|
|
|
-s, --script: LuaJIT script, see SCRIPTING
|
|
|
|
|
|
|
|
-H, --header: HTTP header to add to request, e.g. "User-Agent: wrk"
|
|
|
|
|
|
|
|
--latency: print detailed latency statistics
|
|
|
|
|
|
|
|
--timeout: record a timeout if a response is not received within
|
|
|
|
this amount of time.
|
|
|
|
|
|
|
|
## Benchmarking Tips
|
2012-03-18 14:16:09 +08:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2013-08-18 19:37:21 +08:00
|
|
|
A user script that only changes the HTTP method, path, adds headers or
|
2015-02-07 16:03:17 +08:00
|
|
|
a body, will have no performance impact. Per-request actions, particularly
|
|
|
|
building a new HTTP request, and use of response() will necessarily reduce
|
|
|
|
the amount of load that can be generated.
|
2013-08-18 19:37:21 +08:00
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
## Acknowledgements
|
2012-03-18 14:16:09 +08:00
|
|
|
|
|
|
|
wrk contains code from a number of open source projects including the
|
2013-08-18 12:38:06 +08:00
|
|
|
'ae' event loop from redis, the nginx/joyent/node.js 'http-parser',
|
2015-02-11 10:31:55 +08:00
|
|
|
and Mike Pall's LuaJIT. Please consult the NOTICE file for licensing
|
|
|
|
details.
|
2016-03-20 15:26:48 +08:00
|
|
|
|
2017-02-05 13:43:13 +08:00
|
|
|
## Cryptography Notice
|
2016-03-20 15:26:48 +08:00
|
|
|
|
|
|
|
This distribution includes cryptographic software. The country in
|
|
|
|
which you currently reside may have restrictions on the import,
|
|
|
|
possession, use, and/or re-export to another country, of encryption
|
|
|
|
software. BEFORE using any encryption software, please check your
|
|
|
|
country's laws, regulations and policies concerning the import,
|
|
|
|
possession, or use, and re-export of encryption software, to see if
|
|
|
|
this is permitted. See <http://www.wassenaar.org/> for more
|
|
|
|
information.
|
|
|
|
|
|
|
|
The U.S. Government Department of Commerce, Bureau of Industry and
|
|
|
|
Security (BIS), has classified this software as Export Commodity
|
|
|
|
Control Number (ECCN) 5D002.C.1, which includes information security
|
|
|
|
software using or performing cryptographic functions with symmetric
|
|
|
|
algorithms. The form and manner of this distribution makes it
|
|
|
|
eligible for export under the License Exception ENC Technology
|
|
|
|
Software Unrestricted (TSU) exception (see the BIS Export
|
|
|
|
Administration Regulations, Section 740.13) for both object code and
|
|
|
|
source code.
|