#下载wrk
git clone https://github.com/wg/wrk
#进入目录
cd wrk
#编译
make
基本用法
需在wrk目录下执行
wrk -t1 -c10 -d2s https://www.baidu.com/
2、post请求:
lua脚本编写:
wrk.method = "POST"
wrk.body = "{\"name\":\"naninfo\",\"pList\":[\"557467528\",\"557470362\"],\"version\":4,\"pversion\":\"t\"}"
wrk.headers["Content-Type"] = "application/json"
wrk.headers["clientId"] = "3"
wrk.headers["orgId"] = "10"
wrk目录下执行:
wrk -t1 -c10 -d2s -s /data/cmp/wrk/scripts/dds/getDataList-test.lua --latency http://cmp-dds-service-port.new-dev.cloud.app.ncloud.com/service/download/partition/getDataList
结果:
GET请求:
新建lua脚本:getData-test.lua
request = function()
wrk.headers["clientId"] = "103"
wrk.headers["orgId"] = "1"
path = "/service/download/partition/getData?name=info&productVersion=t&layerName=road_attribute&pame=557466408"
return wrk.format("GET", path)
end
执行:
wrk -t1 -c10 -d2s -s /data/cmp/wrk/scripts/dds/getData-test.lua --latency http://cmp-dds-service-port.new-dev.cloud.app.ncloud.com/
结果如图:
参数含义:
使用方法: wrk <选项> <被测HTTP服务的URL>
Options:
-c, --connections <N> 跟服务器建立并保持的TCP连接数量
-d, --duration <T> 压测时间
-t, --threads <N> 使用多少个线程进行压测,压测时,是有一个主线程来控制我们设置的n个子线程间调度
-s, --script <S> 指定Lua脚本路径
-H, --header <H> 为每一个HTTP请求添加HTTP头
--latency 在压测结束后,打印延迟统计信息
--timeout <T> 超时时间
-v, --version 打印正在使用的wrk的详细版本信
<N>代表数字参数,支持国际单位 (1k, 1M, 1G)
<T>代表时间参数,支持时间单位 (2s, 2m, 2h)
Running 30s test @ https://www.baidu.com/ (压测时间30s)
8 threads and 200 connections (共8个测试线程,200个连接)
Thread Stats Avg Stdev Max +/- Stdev
(平均值) (标准差)(最大值)(正负一个标准差所占比例)
Latency 46.67ms 215.38ms 1.67s 95.59%
(延迟)
Req/Sec 7.91k 1.15k 10.26k 70.77%
(处理中的请求数)
Latency Distribution (延迟分布)
50% 2.93ms
75% 3.78ms
90% 4.73ms
99% 1.35s (99分位的延迟:%99的请求在1.35s以内)
1790465 requests in 30.01s, 684.08MB read (30.01秒内共处理完成了1790465个请求,读取了684.08MB数据)
Requests/sec: 59658.29 (QPS:平均每秒处理完成59658.29个请求)
Transfer/sec: 22.79MB (平均每秒读取数据22.79MB)
注意以下几点:
3. 报错 Non -2xx or -3xx错误:检查参数配置是否有误
4. 报timeout:设置延迟时间--timeout=30s
5. 如果统计结果均为0,看日志是否已执行,如果已经执行则调整时间参数
6. 切记:参数c>=t,参数c最优取值为CPU核数的2——4倍,并发不是很大的时候,一般取2倍
7. wrk会根据线程数,链接数,压测执行时间,调整一秒的并发量,需根据日志查看,QPS计算会平均执行时间。
8. 命令执行中,需实时监测日志、内存、CPU