ab性能指標
在進行性能測試過程中有幾個指標比較重要:
1、吞吐率(Requests per second)
服務器併發處理能力的量化描述,單位是reqs/s,指的是在某個併發用戶數下單位時間內處理的請求數。某個併發用戶數下單位時間內能處理的最大請求數,稱之爲最大吞吐率。
記住:吞吐率是基於併發用戶數的。這句話代表了兩個含義:
a、吞吐率和併發用戶數相關
b、不同的併發用戶數下,吞吐率一般是不同的
計算公式:總請求數/處理完成這些請求數所花費的時間,即
Request per second=Complete requests/Time taken for tests
必須要說明的是,這個數值表示當前機器的整體性能,值越大越好。
2、併發連接數(The number of concurrent connections)
併發連接數指的是某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。
3、併發用戶數(Concurrency Level)
要注意區分這個概念和併發連接數之間的區別,一個用戶可能同時會產生多個會話,也即連接數。在HTTP/1.1下,IE7支持兩個併發連接,IE8支持6個併發連接,FireFox3支持4個併發連接,所以相應的,我們的併發用戶數就得除以這個基數。
4、用戶平均請求等待時間(Time per request)
計算公式:處理完成所有請求數所花費的時間/(總請求數/併發用戶數),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5、服務器平均請求等待時間(Time per request:across all concurrent requests)
計算公式:處理完成所有請求數所花費的時間/總請求數,即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒數。
同時,它也等於用戶平均請求等待時間/併發用戶數,即
Time per request/Concurrency Level
### 測試結果含義參考:
```
Document Path: /a.php //請求的資源
Document Length: 0 bytes // 文檔返回的長度,不包括相應頭
Concurrency Level: 1000 // 併發個數
Time taken for tests: 48.650 seconds //總請求時間
Complete requests: 50000 // 總請求數
Failed requests: 0 //失敗的請求數
Broken pipe errors: 0
Total transferred: 9750000 bytes
HTML transferred: 0 bytes
Requests per second: 1027.75 [#/sec] (mean) // 平均每秒的請求數
Time per request: 973.00 [ms] (mean) // 平均每個請求消耗的時間
Time per request: 0.97 [ms] (mean, across all concurrent requests) // 就是上面的時間 除以併發數
Transfer rate: 200.41 [Kbytes/sec] received // 時間傳輸速率
```
[root@container_node ~]# ab -n 50000 -c 10 http://nginx.test.local:8080/
-c 100 即:每次併發100個
-n 10000 即: 共發送10000個請求
++++++++++++++++++++++++++++++ 10 併發 +++++++++後端: 9個container+++++++++++++++++++++++
### traefik 轉發
[root@container_node ~]# ab -n 50000 -c 100 http://nginx.test.local:8080/
6個container
```
Concurrency Level: 100
Time taken for tests: 5.351 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 11600000 bytes
HTML transferred: 1000000 bytes
Requests per second: 9344.50 [#/sec] (mean)
Time per request: 10.701 [ms] (mean)
Time per request: 0.107 [ms] (mean, across all concurrent requests)
Transfer rate: 2117.11 [Kbytes/sec] received
```
### 使用rancher 集羣 haproxy
ab -n 50000 -c 100 http://nginx.test.local:8080/
```
Concurrency Level: 100
Time taken for tests: 10.822 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 12550000 bytes
HTML transferred: 1000000 bytes
Requests per second: 4620.27 [#/sec] (mean)
Time per request: 21.644 [ms] (mean)
Time per request: 0.216 [ms] (mean, across all concurrent requests)
Transfer rate: 1132.51 [Kbytes/sec] received
```
++++++++++++++++++++++++++++++ 100 併發 +++++++++後端: 9個container+++++++++++++++++++++++
### traefik 轉發
[root@container_node ~]# ab -n 5000000 -c 100 -t 5 http://nginx.test.local:8080/
9個container
```
Concurrency Level: 100
Time taken for tests: 4.728 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Total transferred: 11600000 bytes
HTML transferred: 1000000 bytes
Requests per second: 10575.30 [#/sec] (mean)
Time per request: 9.456 [ms] (mean)
Time per request: 0.095 [ms] (mean, across all concurrent requests)
Transfer rate: 2395.97 [Kbytes/sec] received
```
### 使用rancher 集羣 haproxy 轉發
[root@container_node ~]# ab -n 5000000 -c 100 http://nginx.test.local:8080/
```
Concurrency Level: 100
Time taken for tests: 953.029 seconds
Complete requests: 5000000
Failed requests: 0
Write errors: 0
Total transferred: 1255000000 bytes
HTML transferred: 100000000 bytes
Requests per second: 5246.43 [#/sec] (mean)
Time per request: 19.061 [ms] (mean)
Time per request: 0.191 [ms] (mean, across all concurrent requests)
Transfer rate: 1285.99 [Kbytes/sec] received
```
++++++++++++++++++++++++++++++ 50 併發 +++++++++後端: 9個container+++++++++++++++++++++++
### traefik 轉發
[root@container_node ~]# ab -n 5000000 -c 50 http://nginx.test.local:8080/
```
Concurrency Level: 50
Time taken for tests: 545.354 seconds
Complete requests: 5000000
Failed requests: 0
Write errors: 0
Total transferred: 1160000000 bytes
HTML transferred: 100000000 bytes
Requests per second: 9168.36 [#/sec] (mean)
Time per request: 5.454 [ms] (mean)
Time per request: 0.109 [ms] (mean, across all concurrent requests)
Transfer rate: 2077.21 [Kbytes/sec] received
```
### 使用rancher 集羣 haproxy 轉發
[root@container_node ~]# ab -n 5000000 -c 50 http://nginx.test.local:8080/
```
Concurrency Level: 50
Time taken for tests: 1082.314 seconds
Complete requests: 5000000
Failed requests: 0
Write errors: 0
Total transferred: 1255000000 bytes
HTML transferred: 100000000 bytes
Requests per second: 4619.73 [#/sec] (mean)
Time per request: 10.823 [ms] (mean)
Time per request: 0.216 [ms] (mean, across all concurrent requests)
Transfer rate: 1132.38 [Kbytes/sec] received
```
++++++++++++++++++++++++++++++ 10 併發 +++++++++後端: 9個container+++++++++++++++++++++++
### traefik 轉發
[root@container_node ~]# ab -n 5000000 -c 10 http://nginx.test.local:8080/
9個container
```
Concurrency Level: 10
Time taken for tests: 582.869 seconds
Complete requests: 5000000
Failed requests: 0
Write errors: 0
Total transferred: 1160000000 bytes
HTML transferred: 100000000 bytes
Requests per second: 8578.26 [#/sec] (mean)
Time per request: 1.166 [ms] (mean)
Time per request: 0.117 [ms] (mean, across all concurrent requests)
Transfer rate: 1943.51 [Kbytes/sec] received
```
### 使用rancher 集羣 haproxy 轉發
```
[root@container_node ~]# ab -n 5000000 -c 10 http://nginx.test.local:8080/
Concurrency Level: 10
Time taken for tests: 1340.674 seconds
Complete requests: 5000000
Failed requests: 0
Write errors: 0
Total transferred: 1255000000 bytes
HTML transferred: 100000000 bytes
Requests per second: 3729.47 [#/sec] (mean)
Time per request: 2.681 [ms] (mean)
Time per request: 0.268 [ms] (mean, across all concurrent requests)
Transfer rate: 914.16 [Kbytes/sec] received
```
### traefik 與 nginx性能對比
https://docs.traefik.io/benchmarks/