Apache Bench - 同时测试多个URL

在本章中,我们将学习如何同时测试多个URL.为此,我们需要编辑我们的应用程序文件app.py以包含两个URL :

from bottle import Bottle, run

app = Bottle()

@app.route('/')
@app.route('/hello1')
def hello():
   return "Hello World! It is first URL."

@app.route('/hello2')
def hello():
   return "Hello World! It is second URL."

run(app,server = 'gunicorn',host = '127.0.0.1', port = 8080)

创建一个简单Shell脚本

您可以通过创建具有多个ab调用的shell脚本来完成此操作.创建一个文件test.sh并添加以下行并减去;

 
 ab -n 100 -c 10 http://127.0.0.1 :8080/hello1 
 ab -n 100 -c 10 http://127.0.0.1:8080/hello2

当你添加了以上内容时行,保存并关闭文件.使文件可执行 :

 
 chmod u + x test.sh

现在让我们运行脚本 :

 
 ./test.sh

为了避免重复和清晰的目的,我们将仅显示ab输出的相关性,通过点指示哪些部分被省略,如下所示.

输出

.
.
.
Document Path:          /hello1
Document Length:        732 bytes

Concurrency Level:      10
Time taken for tests:   0.040 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      90000 bytes
HTML transferred:       73200 bytes
Requests per second:    2496.13 [#/sec] (mean)
Time per request:       4.006 [ms] (mean)
Time per request:       0.401 [ms] (mean, across all concurrent requests)
Transfer rate:          2193.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.8      0       3
Processing:     1    3   1.0      4       5
Waiting:        0    3   1.2      4       4
Total:          1    4   0.6      4       5
WARNING: The median and mean for the processing time are not within a normal deviation
        These results are probably not that reliable.
.
.
.

将Apache Bench输出保存到文件的Shell脚本

您可以将Apache Bench输出保存到文件中创建一个带有多个ab调用的shell脚本.在每一行的末尾,放置一个&amp ;; 这使得命令在后台运行,并让下一个命令开始执行.您还需要使用< filename>将输出重定向到每个URL的文件.例如,我们的文件test.sh在修改后会显示如下 :

 
 $ ab -n 100 -c 10 http://127.0.0.1:8080/hello1> test1.txt& 
 $ ab -n 100 -c 10 http://127.0.0.1:8080/hello2> test2.txt&

此处, test1.txt test2.txt 是保存输出数据的文件.

您可以检查上面的脚本是否创建了两个文件test1.txt和test2.txt,其中包含各个URL的ab输出 :

 
 $ ls -l

输出

 
 ... 
 -rw-r  -  r-- 1 root root 5225 5月30日12:11 out.data 
 -rwxr  -  r-- 1 root root 118 Jun 10 12:24 test.sh 
 -rw-r  -  r-- 1 root root 1291 Jun 10 12:31 test1.txt 
 -rwxr  -  r-- 1 root root 91 Jun 10 13 :22 test2.sh 
 -rw-r  -  r-- 1 root root 1291 Jun 10 12:31 test2.txt 
 ...

注销情况

使用ab时,您应该在没有警告的情况下警惕失败的测试.例如,如果您检查错误的URL,您可能会得到类似于以下内容的内容(我们故意在此更改端口).

 
 $ ab -l -r -n 100 -c 10 -k -H"Accept-Encoding:gzip,deflate"http://127.0.0.1:805/

输出

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, https://img01.yuandaxia.cn/Content/img/tutorials/apache_bench/yuebofa.php
Licensed to The Apache Software Foundation, https://img01.yuandaxia.cn/Content/img/tutorials/apache_bench/

Benchmarking 127.0.0.1 (be patient).....done

Server Software:
Server Hostname:        127.0.0.1
Server Port:            805

Document Path:          /
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.002 seconds
Complete requests:      100
Failed requests:        150
   (Connect: 0, Receive: 100, Length: 0, Exceptions: 50)
Keep-Alive requests:    0
Total transferred:      0 bytes
HTML transferred:       0 bytes
Requests per second:    44984.26 [#/sec] (mean)
Time per request:       0.222 [ms] (mean)
Time per request:       0.022 [ms] (mean, across all concurrent requests)
Transfer rate:          0.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    0   0.2      0       0
Waiting:        0    0   0.0      0       0
Total:          0    0   0.2      0       0

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%      0
  95%      0
  98%      0
  99%      0
 100%      0 (longest request)