轻量级压力测试工具 - AB

时间:2022-05-06
本文章向大家介绍轻量级压力测试工具 - AB,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

ab是什么

ab是Apache附带的一个压力测试工具,它非常容易使用

ab不像LoadRnner、Jmeter等那么专业,但它足够轻便,只需一条命令,就可以了解到web服务器处理请求的一些基本信息

ab能做什么

可以使用ab来模拟N个用户发送N个请求,结果数据可以告诉我们:

处理这些请求需要多少时间?

每秒可以处理多少个请求?

平均响应时间是多少?

每秒网络传输量是多少?

......

通过调整N的大小,来查看服务器的不同反应,了解到服务器的承受能力大概是什么程度

在系统优化前后来执行ab测试一下,查看优化效果如何

在执行测试的同时,也可以观察下服务器的资源使用状况,例如使用top命令,看下CPU及内存的状态

如何使用

ab是Apache的一个小工具,安装了Apache的话就可以直接使用,如果没装Apache,也可以单独安装ab

(1) 使用示例

ab -n1000 -c10 http://www.xxx.com

-n 指定了请求总数

-c 指定了并发用户数

后面的url就是要测试的地址

这3个参数是最常用的,ab还有一些其他常用的参数:

-t 等待服务器响应的最大时间,单位秒

-k 使用Keep-Alive特性

-c 对请求附加一个cookie,形式:name=value

(2) 查看结果

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:        Apache/2.2.21
Server Hostname:        localhost
Server Port:            80
Document Path:          /index.php
Document Length:        211 bytes
Concurrency Level:      10
Time taken for tests:   0.496 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      400000 bytes
HTML transferred:       211000 bytes
Requests per second:    2015.93 [#/sec] (mean)
Time per request:       4.960 [ms] (mean)
Time per request:       0.496 [ms] (mean, across all concurrent requests)
Transfer rate:          787.47 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.4      0       1
Processing:     2    5   1.1      4      12
Waiting:        2    4   1.1      4      12
Total:          2    5   1.1      5      12
Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      5
  80%      6
  90%      6
  95%      7
  98%      8
  99%      9
 100%     12 (longest request)

结果中包含了不少内容,其中重要的指标包括:

Requests per second

平均每秒可以处理的请求数,就是常说的吞吐率

Time per request

平均请求响应时间

Transfer rate

平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Time taken for tests

执行这些测试请求花费的时间

Failed requests

没有被正常处理的请求数,服务器压力过大时,这个数字会增加