安装方法百度很多,不做介绍
一、 压测的几个概念
1. QPS
QPS Queries Per Second
是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。
2. TPS
TPS Transactions Per Second
也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,
3. 并发数
并发数(并发度):指系统同时能处理的请求数量,同样反应了系统的负载能力。这个数值可以分析机器1s内的访问日志数量来得到
4. 吐吞量
吞吐量是指系统在单位时间内处理请求的数量,TPS、QPS都是吞吐量的常用量化指标。
- 一个系统的吞吐量(承压能力)与request(请求)对cpu的消耗,外部接口,IO等等紧密关联。
- 单个request 对cpu消耗越高,外部系统接口,IO影响速度越慢,系统吞吐能力越低,反之越高。
5. QPS和TPS区别
个人理解如下:
Tps即每秒处理事务数,包括了
- 用户请求服务器
- 服务器自己的内部处理
- 服务器返回给用户
这三个过程,每秒能够完成N个这三个过程,Tps也就是N;
Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
二、工具使用
# GET
ab -n10 -c4 http://localhost:8080/test
# POST
ab -n400 -c20 -p parm.txt -T "application/x-www-form-urlencoded" http://localhost:8080/test
三、数值分析
Concurrency Level: 100 (并发数)
Time taken for tests: 0.800 seconds (压力测试消耗的总时间)
Complete requests: 100 (压力测试的的总次数)
Failed requests: 0 (失败的请求数)
Total transferred: 16342 bytes (传输的总数据量)
HTML transferred: 0 bytes (HTML文档的总数据量)
Requests per second: 125.03 [#/sec] (mean) (平均每秒的请求数)
Time per request: 799.805 [ms] (mean) (所有并发用户(这里是100)都请求一次的平均时间)
Time per request: 7.998 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)
Transfer rate: 19.95 [Kbytes/sec] received (传输速率,单位:KB/s)
四、更多参数
关键字 | 作用 |
---|---|
-n | 即requests,用于指定压力测试总共的执行次数。 |
-c | 即concurrency,用于指定压力测试的并发数。 |
-t | 即timelimit,等待响应的最大时间(单位:秒)。 |
-b | 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。 |
-p | 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。 |
-u | 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。 |
-T | 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。 |
-v | 即verbosity,指定打印帮助信息的冗余级别。 |
-w | 以HTML表格形式打印结果。 |
-i | 使用HEAD请求代替GET请求。 |
-x | 插入字符串作为table标签的属性。 |
-y | 插入字符串作为tr标签的属性。 |
-z | 插入字符串作为td标签的属性。 |
-C | 添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个)。 |
-H | 添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。 |
-A | 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。 |
-P | 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。 |
-X | 指定使用的代理服务器和端口号,例如:“126.10.10.3:88”。 |
-V | 打印版本号并退出。 |
-k | 使用HTTP的KeepAlive特性。 |
-d | 不显示百分比。 |
-S | 不显示预估和警告信息。 |
-g | 输出结果信息到gnuplot格式的文件中。 |
-e | 输出结果信息到CSV格式的文件中。 |
-r | 指定接收到错误信息时不退出程序。 |
-h | 显示用法信息,其实就是ab -help。 |