#下载wrk
git clone https://github.com/wg/wrk
#进入目录
cd wrk
#编译
make
yum -y install git
git clone https://github.com/wg/wrk.git
brew install wrk
需在wrk目录下执行
./wrk -t8 -c100 -d10s http://192.168.0.184:30001/gwmanager --latency
-t:启动线程数,一般为cpu核*2,可以根据IO或cpu密集型进行调整
-c: 并发数,平分到每个线程中,熟练不能大于可以用TCP端口数
-d: 持续请求时间
--latency:显示延时分布 ,"Latency Distribution"部分。
Running 10s test @ http://192.168.0.184:30001/gwmanager
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 27.41ms 28.46ms 89.75ms 75.26%
Req/Sec 626.35 70.19 1.22k 86.62%
Latency Distribution
50% 6.71ms
75% 54.47ms
90% 79.40ms
99% 83.89ms
49908 requests in 10.01s, 7.19MB read
Requests/sec: 4985.86
Transfer/sec: 735.26KB
Latency:响应时间
Req/Sec:单个线程处理请求数
Avg:平均值
Stdev:标准差,值越大说明数据分布均匀,可能是机器或服务性能不稳定导致。
Max:最大值
+/- Stdev:正负标准差比例,差值比标准差大或小的数据比率
Latency Distribution:延时分布多少ms一下请求数比例
Requests/sec:平均每秒处理请求数
Transfer/sec:平均每秒传输数据量
-H:添加header头
注:冒号后面必须有一个空格,否则无法获取header
./wrk -t2 -c200 -d10s -H "token: oiSldU" -H "sign: sdsds" http://192.168.0.184:30001/token
--script:添加复杂请求参数,lua脚本 ,或使用 -s:
./wrk -t8 -c100 -d10s http://192.168.0.184:30001/gwmanager --script=test.lua
./wrk -t8 -c100 -d10s http://192.168.0.184:30001/gwmanager -s test.lua
test.lua:
wrk.method = "POST"
wrk.body = "name=123"
wrk.headers["token"] = "xxxxxxxx"
wrk.headers["Content-Type"] = "application/json"
动态参数
#动态header
request = function()
uid = math.random(1, 10000000)
wrk.headers["token"] = uid
return wrk.format(nil, nil, headers, nil)
end