一、介绍

ab是apachebench命令的缩写。

ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

二、基本使用

ab -c 10 -n 100 http://local.host.com/index.php

-c10 表示并发用户数为10
-n100 表示请求总数为100

Server Software:        nginx/1.12.0
Server Hostname:        www.hhcycj.com
Server Port:            80

Document Path:          /index.php
Document Length:        34351 bytes # 表示HTTP响应数据的正文长度

Concurrency Level:      10 # 并发用户数,这是我们设置的参数之一
Time taken for tests:   26.249 seconds # 所有这些请求被处理完成所花费的总时间
Complete requests:      100 # 总请求数量,这是我们设置的参数之一。
Failed requests:        0 # 失败的请求数量
Write errors:           0
Total transferred:      3532404 bytes
# 所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度

HTML transferred:       3435100 bytes
# 所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度

Requests per second:    3.81 [#/sec] (mean) # 吞吐率,计算公式:Complete requests/Time taken for tests

Time per request:       2624.894 [ms] (mean) 
# 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)

Time per request:       262.489 [ms] (mean, across all concurrent requests) 
# 服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。

Transfer rate:          131.42 [Kbytes/sec] received 
# 这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1   14 100.0      3    1003
Processing:    96 2518 1531.1   2190    6691
Waiting:       75  361 294.8    291    1704
Total:         98 2532 1531.6   2225    6694


# 这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过3735ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。
Percentage of the requests served within a certain time (ms)
  50%   2225
  66%   2979
  75%   3602
  80%   3735
  90%   4788
  95%   5665
  98%   6649
  99%   6694
 100%   6694 (longest request)