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** 是理论上每个请求按顺序执行时的平均耗时。