压测常用工具、压测指标到底是什么?
一、压测指标-I
1.QPS,每秒查询
- Queries Per Second意思是“每秒查询率”。
- 是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
- 互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
2.TPS,每秒事务
- TransactionsPerSecond的缩写,也就是事务数/秒。
- 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。
3.RT,响应时间
- 响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。
- 响应时间RT(Response-time),是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。
二、压测指标-II
三、压测工具
1.ab
命令格式:
- ab [options] [http://]hostname[:port]/path
常用参数:
- -n requests 总请求数
- -c concurrency 一次产生的请求数,可以理解为并发数
- -t timelimit 测试所进行的最大秒数, 可以当做请求的超时时间
- -p postfile 包含了需要POST的数据的文件
- -T content-type POST数据所使用的Content-type头信息
eg:
例如测试某个GET请求接口:
- ab -n 10000 -c 100 -t 10 “http://127.0.0.1:8080/api/v1/posts?size=10”
测试POST请求接口:
- ab -n 10000 -c 100 -t 10 -p post.json -T “application/json” “http://127.0.0.1:8080/api/v1/post”
结果分析:
2.go-wrk(在window上压测)
安装:go install github.com/adeven/go-wrk
使用:go-wrk [flags] url
常用参数:
- -H=“User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;”: 由’\n’分隔的请求头
- -c=100: 使用的最大连接数
- -k=true: 是否禁用keep-alives
- -i=false: if TLS security checks are disabled
- -m=“GET”: HTTP请求方法
- -n=1000: 请求总数
- -t=1: 使用的线程数
- -b=“” HTTP请求体
- -s=“” 如果指定,它将计算响应中包含搜索到的字符串s的频率
例子:go-wrk -t=8 -c=100 -n=10000 “http://127.0.0.1:8080/api/v1/posts?size=10”
结果分析: