压测工具HTTP
压测工具HTTP
lycheeKing在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。
压测相关术语
- 响应时间(RT) :指系统对请求作出响应的时间.
- 吞吐量(Throughput) :指系统在单位时间内处理请求的数量
- QPS每秒查询率(Query Per Second) :“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
- TPS(TransactionPerSecond):每秒钟系统能够处理的交易或事务的数量
- 并发连接数:某个时刻服务器所接受的请求总数
压力测试工具
ab
ab全称Apache Bench,是Apache自带的性能测试工具。使用这个工具,只须指定同时连接数、请求数以及URL,即可测试网站或网站程序的性能。
通过ab发送请求模拟多个访问者同时对某一URL地址进行访问,可以得到每秒传送字节数、每秒处理请求数、每请求处理时间等统计数据。
命令格式:
1 | ab [options] [http://]hostname[:port]/path |
常用参数如下:
1 | -n requests 总请求数 |
更多参数请查看官方文档。
例如测试某个GET请求接口:
1 | ab -n 10000 -c 100 -t 10 "http://127.0.0.1:8080/api/v1/posts?size=10" |
测试POST请求接口:
1 | ab -n 10000 -c 100 -t 10 -p post.json -T "application/json" "http://127.0.0.1:8080/api/v1/post" |
wrk
wrk是一款开源的HTTP性能测试工具,它和上面提到的ab
同属于HTTP性能测试工具,它比ab
功能更加强大,可以通过编写lua脚本来支持更加复杂的测试场景。
Mac下安装:
1 | brew install wrk |
常用命令参数:
1 | -c --conections:保持的连接数 |
使用示例:
1 | wrk -t8 -c100 -d30s --latency http://127.0.0.1:8080/api/v1/posts?size=10 |
输出结果:
1 | Running 30s test @ http://127.0.0.1:8080/api/v1/posts?size=10 |
go-wrk
go-wrk是Go语言版本的wrk
,Windows同学可以使用它来测试,使用如下命令来安装go-wrk
:
1 | go get github.com/adeven/go-wrk |
使用方法同wrk
类似,基本格式如下:
1 | go-wrk [flags] url |
常用的参数:
1 | -H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;": 由'\n'分隔的请求头 |
执行测试:
1 | go-wrk -t=8 -c=100 -n=10000 "http://127.0.0.1:8080/api/v1/posts?size=10" |
输出结果:
1 | ==========================BENCHMARK========================== |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果