ApacheBench (httpd)(ab命令) 使用

146 阅读4分钟

ab命令输出解释,重解释 2个  Time per request  区别

测试命令

[root@hostname]# ab -n 100 -c 100 -p content.txt -T 'application/json' http://10.10.10.6:8080/aa/bb
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 10.21.201.4 (be patient).....done


Server Software:        nginx
Server Hostname:        10.10.10.6
Server Port:            8080

Document Path:          /aa/bb
Document Length:        103 bytes

Concurrency Level:      100
Time taken for tests:   6.162 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      40800 bytes
Total body sent:        43972500
HTML transferred:       10300 bytes
Requests per second:    16.23 [#/sec] (mean)
Time per request:       6161.856 [ms] (mean)
Time per request:       61.619 [ms] (mean, across all concurrent requests)
Transfer rate:          6.47 [Kbytes/sec] received
                        6968.99 kb/s sent
                        6975.45 kb/s total

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    8   3.1      8      13
Processing:   574 3196 1421.9   2814    5579
Waiting:      571 3196 1422.0   2814    5579
Total:        574 3203 1424.4   2821    5588

Percentage of the requests served within a certain time (ms)
  50%   2821
  66%   3809
  75%   4667
  80%   4721
  90%   5141
  95%   5270
  98%   5579
  99%   5588
 100%   5588 (longest request)

解释

ApacheBench (ab) 工具用于对服务器的性能进行压力测试。你运行的命令表示发送 100 个并发请求(-c 100),总共发送 100 个请求(-n 100),请求的内容是 JSON(通过 `-T 'application/json'` 指定内容类型),并且 POST 数据从 `content.txt` 文件中读取(使用 `-p content.txt`)。以下是输出的详细解释:

### 1. **基本信息:**

- **Server Software:** nginx

测试目标服务器的 Web 服务器软件为 Nginx。

- **Server Hostname:** 10.10.10.6

服务器的 IP 地址。

- **Server Port:** 8080

服务器的端口号。

- **Document Path:** `/aa/bb`

请求的路径,即 POST 请求目标的 URL 路径。

- **Document Length:** 103 bytes

响应体的大小为 103 字节。

### 2. **测试结果概览:**

- **Concurrency Level:** 100

并发级别是 100,即同时发送 100 个请求。

- **Time taken for tests:** 6.162 seconds

完成所有请求共花费的时间为 6.162 秒。

- **Complete requests:** 100

成功完成的请求数是 100。

- **Failed requests:** 0

失败请求数为 0,说明所有请求都成功完成。

- **Total transferred:** 40800 bytes

从服务器接收的总字节数,包括响应头和响应体。

- **Total body sent:** 43972500 bytes

发送到服务器的请求体的总字节数。

- **HTML transferred:** 10300 bytes

仅从服务器接收到的 HTML 数据总字节数。

### 3. **关键性能指标:**

- **Requests per second:** 16.23 [#/sec]

每秒完成的请求数为 16.23 个请求。

- **Time per request:**

- **6161.856 ms (mean)**

每个请求的平均时间是 6161.856 毫秒,这表示从发送请求到收到响应的时间。

- **61.619 ms (mean, across all concurrent requests)**

这个值表示每个请求的平均时间,**分摊到所有并发请求上**。这个值通过 `6161.856 ms / 100` 得出,表示如果这些请求是按顺序执行的,每个请求会耗费 61.619 毫秒。

- **Transfer rate:**

- **6.47 Kbytes/sec received**

从服务器接收数据的传输速率为 6.47 KB/s。

- **6968.99 kb/s sent**

向服务器发送数据的速率为 6968.99 kb/s。

### 4. **连接时间统计:**

不同阶段的连接时间统计:

- **Connect:**

最小连接时间是 0 毫秒,平均连接时间是 8 毫秒,最大连接时间是 13 毫秒。

- **Processing:**

处理时间(服务器处理请求的时间)最短是 574 毫秒,平均是 3196 毫秒,最长是 5579 毫秒。

- **Waiting:**

等待时间是指从客户端发出请求后到收到响应的时间,这个值和处理时间基本一致,最短是 571 毫秒,平均是 3196 毫秒,最长是 5579 毫秒。

- **Total:**

完成一个请求的总时间(连接时间+处理时间+等待时间)。最短是 574 毫秒,平均是 3203 毫秒,最长是 5588 毫秒。

### 5. **百分比统计:**

- 50% 的请求在 2821 毫秒内完成。

- 90% 的请求在 5141 毫秒内完成。

- 99% 的请求在 5588 毫秒内完成。

### 6. **Time per request 的区别:**

- **6161.856 ms (mean):**

表示从开始发送到接收到响应,每个请求的平均耗时。这是测试中 100 个并发请求的平均值。

- **61.619 ms (mean, across all concurrent requests):**

表示每个请求的平均时间,分摊到所有并发请求上。这是通过总耗时 6161.856 ms 除以并发请求数 100 计算得到的。如果这些请求是按顺序执行,每个请求的平均耗时将是 61.619 毫秒。

总结:

- **6161.856 ms** 表示并发情况下的请求平均耗时。

- **61.619 ms** 是理论上每个请求按顺序执行时的平均耗时。