http服务器压力测试工具go-wrk
对于http服务器压力测试工具,类似于ab工具,基于Golang编写的
1、https://github.com/adjust/go-wrk
go get -U github.com/adjust/go-wrk 会自动build
2、https://github.com/wg/wrk
git clone https://github.com/wg/wrk cd wrk make ./wrk --help Usage: wrk <options> <url> Options: -c, --connections <N> Connections to keep open -d, --duration <T> Duration of test -t, --threads <N> Number of threads to use -s, --script <S> Load Lua script file -H, --header <H> Add header to request --latency Print latency statistics --timeout <T> Socket/request timeout -v, --version Print version details Numeric arguments may include a SI unit (1k, 1M, 1G) Time arguments may include a time unit (2s, 2m, 2h)
3、示例
wrk -t10 -c100 -d10s -T5s --latency http://localhost:6060
-t:需要模拟的线程数 -c:需要模拟的连接数 -d:测试的持续时间 --timeout 或 -T:超时的时间 --latency:显示延迟统计 -s 或 --script: lua脚本,使用方法往下看 -H, --header: 添加http header, 比如. "User-Agent: wrk"
输出结果
Running 10s test @ http://localhost:6060 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev(正负一个标准差占比) Latency 4.68ms 1.18ms 27.85ms 86.17% Req/Sec 2.14k 148.28 3.29k 78.02% Latency Distribution 50% 4.53ms 75% 4.93ms 90% 5.58ms 99% 9.48ms 215164 requests in 10.08s, 29.55MB read Requests/sec: 21355.38 Transfer/sec: 2.93MB
对于一些复杂的请求则需要借助于LUA脚本
lua脚本为:body中是参数 ,headers为请求头
request = function() headers = { Connection= "keep-alive"} body = "name=中文" return wrk.format("POST",path,headers,body) end
wrk -t10 -c100 -d10s -T5s --latency -s testpost.lua http://localhost:6060/testpost Running 10s test @ http://localhost:6060/testpost 10 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 5.45ms 3.04ms 69.77ms 90.50% Req/Sec 1.89k 260.74 3.20k 82.10% Latency Distribution 50% 4.88ms 75% 5.55ms 90% 7.19ms 99% 17.54ms 189108 requests in 10.05s, 26.51MB read Requests/sec: 18816.19 Transfer/sec: 2.64MB
下一篇:
macos配置ssh别名登陆并免密登录