Birden Fazla URL'yi Aynı Anda Test Etme
Bu bölümde, birden çok URL'yi aynı anda nasıl test edeceğimizi öğreneceğiz. Bunun için uygulama dosyamız olan app.py'yi iki URL içerecek şekilde düzenlememiz gerekecek -
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)Basit Bir Kabuk Komut Dosyası Oluşturma
Bunu, birden çok ab çağrısı içeren bir kabuk betiği oluşturarak yapabilirsiniz. Bir test.sh dosyası oluşturun ve buna aşağıdaki satırları ekleyin -
ab -n 100 -c 10 http://127.0.0.1:8080/hello1 
ab -n 100 -c 10 http://127.0.0.1:8080/hello2Yukarıdaki satırları eklediğinizde, dosyayı kaydedin ve kapatın. Dosyayı çalıştırılabilir yapın -
chmod u+x test.shŞimdi betiği çalıştıralım -
./test.shTekrardan ve netlik amacından kaçınmak için, aşağıda gösterildiği gibi, hangi kısmın çıkarıldığını noktalarla göstererek ab çıktısının yalnızca ilgili kısmını göstereceğiz.
Çıktı
.
.
.
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 Çıktısını Dosyaya Kaydetmek İçin Kabuk Betiği
Birden çok ab çağrısıyla bir kabuk betiği oluşturarak Apache Bench Çıktısını dosyaya kaydedebilirsiniz. Her satırın sonuna bir&;bu, komutun arka planda çalışmasını sağlar ve sonraki komutun yürütülmesini başlatır. Ayrıca çıktıyı her url için <dosyaadı> kullanarak bir dosyaya yeniden yönlendirmek isteyeceksiniz. Örneğin, test.sh dosyamız değişiklikten sonra aşağıdaki gibi görünecektir -
$ 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 &Buraya, test1.txt ve test2.txt çıktı verilerini kaydedecek dosyalardır.
Yukarıdaki komut dosyasının ilgili URL'ler için ab çıktısını içeren iki dosya, test1.txt ve test2.txt oluşturduğunu kontrol edebilirsiniz -
$ ls -lÇıktı
...
-rw-r--r-- 1 root root  5225 May 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
...Dikkatli Durum
Ab kullanırken, başarısız olan teste karşı uyarıda bulunmadan uyanık olmalısınız. Örneğin, yanlış bir URL'yi kontrol ederseniz, aşağıdakine benzer bir şey alabilirsiniz (burada bağlantı noktasını kasıtlı olarak değiştirdik).
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://127.0.0.1:805/Çıktı
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
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)