Apache Bench adalah alat kecil yang berguna untuk menguji waktu respons layanan web, dan dengan demikian kinerja server web. Kami dapat menentukan jumlah permintaan untuk dikirim, URL target, menyiapkan konkurensi, hanya untuk menyebutkan beberapa setelan alat ini.
Meskipun beban kerja yang disimulasikan seperti itu tidak akan menghasilkan data yang persis sama dengan lalu lintas dunia nyata, itu selalu merupakan ide yang baik untuk menguji sebelum pergi ke produksi. Mungkin sebelum menerapkan versi baru aplikasi, kita dapat menjalankan pengujian pada versi baru, dan membandingkan hasilnya dengan data pengujian sebelumnya untuk melihat apakah aplikasi kita akan melayani lebih lambat, atau lebih cepat dari versi terakhir. Dengan pengujian yang terencana dengan baik, alat ini dapat menunjukkan kemungkinan kemacetan aplikasi, dan dapat memberikan tempat menarik di mana kita harus melihat kode kita untuk kemungkinan pengoptimalan.
Dalam tutorial ini kita akan menginstal Apache Bench di Red Hat Enterprise Linux 8, serta Apache Webserver untuk menjalankan beberapa pengujian.
Dalam tutorial ini Anda akan mempelajari:
- Cara menginstal Apache Bench
- Cara menginstal server web httpd, dan menambahkan beberapa konten dasar
- Cara menjalankan pengujian sederhana terhadap server web
Menjalankan tes kinerja terhadap server web lokal dengan Apache Bench.
Persyaratan dan Konvensi Perangkat Lunak yang Digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Red Hat Enterprise Linux 8 |
Perangkat Lunak | Apache Bench 2.3 |
Lainnya | Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo perintah. |
Konvensi | # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Cara menginstal apache bench di Redhat 8 petunjuk langkah demi langkah
Apache Bench tersedia di sumber perangkat lunak dasar setelah mengaktifkan repositori manajemen langganan bersama dengan Apache httpd
server web. Untuk mencoba alat kami, kami akan menambahkan beberapa konten dasar ke server web, baik statis dan ditulis dalam php
.
- Untuk menginstal Apache Bench yang ada di
httpd-tools
paket, kami akan menggunakandnf
:# dnf install httpd-tools
- Untuk membuat lingkungan pengujian, kami akan menggunakan
ab
alat aktif, kami akan menginstal server web dengan dukungan php:# dnf install httpd php
- Kami akan menambahkan halaman HTML statis
/var/www/html/index.html
dengan konten sebagai berikut:<html> <head> <title>Title of the webpage</title> </head> <body> <p>This is a simple html page.</p> </body> </html>
Dan halaman lain yang menghasilkan konten yang sama, tetapi ditulis dalam php dengan cara yang sengaja boros. File akan menjadi
/var/www/html/index.php
, dengan konten di bawah ini:<?php echo "<html>\n"; echo "<head>\n"; echo "<title>Title of the webpage</title>\n"; echo "</head>\n"; echo "<body>\n"; echo "<p>This is a simple html page.</p>\n"; echo "</body>\n"; echo "</html>\n"; ?>
Perhatikan bahwa saat kami menyajikan teks statis, kami hanya membutuhkan satu
echo
, atau tidak ada php sama sekali. Kami hanya membuat halaman ini untuk melihat perbedaan waktu respons. - Kami dapat memulai server web kami:
# systemctl start httpd
- Kami tidak membutuhkan
root
hak istimewa untuk benchmarking. Untuk pengujian pertama, kita akan menjalankanab
terhadap halaman statisindex.html
, menyediakan 100.000 permintaan (-n) untuk halaman dalam 10 utas bersamaan (-c), dalam jangka waktu maksimum 60 detik (-t). Pada mesin lab jumlah permintaan ini akan dilayani dalam satu menit, tetapi tergantung pada perangkat kerasnya, ini mungkin tidak cukup. Perhatikan juga bahwa kami menghilangkan lalu lintas jaringan yang sebenarnya dengan membuat tolok ukur dari localhost, dan kami mendorong beban untuk menjalankan permintaan dan menyajikannya pada perangkat keras yang sama.$ ab -t 60 -n 100000 -c 10 http://localhost/index.html This is ApacheBench, Version 2.3 <$Revision: 1826891
gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking localhost (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requestsServer Software: Apache/2.4.35
Server Hostname: localhost
Server Port: 80Document Path: /index.html
Document Length: 116 bytesConcurrency Level: 10
Time taken for tests: 19.556 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 39600000 bytes
HTML transferred: 11600000 bytes
Requests per second: 5113.63 [#/sec] (mean)
Time per request: 1.956 [ms] (mean)
Time per request: 0.196 [ms] (mean, across all concurrent requests)
Transfer rate: 1977.53 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 3
Processing: 0 2 0.8 2 26
Waiting: 0 1 0.7 1 26
Total: 0 2 0.8 2 26Percentage of the requests served within a certain time (ms)
50% 2
66% 2
75% 2
80% 2
90% 3
95% 3
98% 4
99% 5
100% 26 (longest request)
- Pengujian kedua akan dijalankan dengan set parameter yang sama, tetapi terhadap halaman php yang boros
index.php
.$ ab -t 60 -n 100000 -c 10 http://localhost/index.php This is ApacheBench, Version 2.3 <$Revision: 1826891
gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking localhost (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requestsServer Software: Apache/2.4.35
Server Hostname: localhost
Server Port: 80Document Path: /index2.php
Document Length: 116 bytesConcurrency Level: 10
Time taken for tests: 35.064 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 30700000 bytes
HTML transferred: 11600000 bytes
Requests per second: 2851.89 [#/sec] (mean)
Time per request: 3.506 [ms] (mean)
Time per request: 0.351 [ms] (mean, across all concurrent requests)
Transfer rate: 855.01 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 3
Processing: 1 3 1.2 3 27
Waiting: 0 3 1.2 3 27
Total: 1 3 1.3 3 28Percentage of the requests served within a certain time (ms)
50% 3
66% 4
75% 4
80% 4
90% 5
95% 6
98% 7
99% 7
100% 28 (longest request)
It isn't a big surprise what the results show. The static content is served much faster than the wasteful page that also need to go trough the php interpreter. And with this we have shown in a simple example how the Apache Bench tool can be used to gather statistics on the response time of our webservices.