Apache Bench - Pengaturan Lingkungan
Di bab ini, kami akan memandu Anda cara mengatur lingkungan Anda untuk Apache Bench di VPS Anda.
Persyaratan Sistem
Memory - 128 MB
Disk Space - Tidak ada persyaratan minimum
Operating System - Tidak ada persyaratan minimum
Menginstal Apache Bench
Apache Bench adalah aplikasi yang berdiri sendiri, dan tidak memiliki ketergantungan pada instalasi server web Apache. Berikut ini adalah proses dua langkah untuk menginstal Apache Bench.
Step 1 - Perbarui database paket.
# apt-get update
Harap dicatat bahwa simbol # sebelum perintah terminal berarti bahwa pengguna root mengeluarkan perintah itu.
Step 2 - Instal paket apache2 utils untuk mendapatkan akses ke Apache Bench.
# apt-get install apache2-utils
Apache Bench sekarang sudah terpasang. Jika Anda ingin menguji aplikasi web yang dihosting pada VPS yang sama, maka cukup menginstal server web Apache saja -
# apt-get install apache2
Menjadi utilitas Apache, Apache Bench secara otomatis diinstal pada penginstalan server web Apache.
Memverifikasi Instalasi Apache Bench
Sekarang mari kita lihat cara memverifikasi Instalasi Apache Bench. Kode berikut akan membantu memverifikasi instalasi -
# ab -V
Output
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/
Jika Anda melihat output terminal di atas, artinya Anda telah berhasil menginstal Apache Bench.
Membuat Pengguna Sudo yang Diistimewakan
Dari sudut pandang keamanan, dianggap sebagai praktik yang baik bagi administrator sistem untuk membuat pengguna sudo alih-alih berfungsi sebagai root. Kami akan membuat pengguna tes, bernama tes, untuk tujuan -
# useradd -m -d /home/test -g sudo test
Mari kita atur kata sandi untuk pengguna baru -
# passwd test
Sistem akan meminta kata sandi baru untuk pengujian pengguna. Anda dapat memasukkan kata sandi sederhana karena kami hanya menguji, dan tidak menerapkan ke server produksi. Biasanya perintah sudo akan meminta Anda untuk memberikan kata sandi pengguna sudo; disarankan untuk tidak menggunakan kata sandi yang rumit karena prosesnya menjadi tidak praktis.
Output
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Menguji Situs Web Apache.org
Di bagian ini, kami akan menguji Situs Apache.org. Mari kita beralih ke uji pengguna sudo -
# su test
Untuk memulainya, kami akan menguji situs web organisasi Apache, https://www.apache.org/. Kami pertama-tama akan menjalankan perintah, dan kemudian memahami hasilnya -
$ ab -n 100 -c 10 https://www.apache.org/
Sini -nadalah jumlah permintaan yang harus dilakukan untuk sesi pembandingan. Standarnya adalah hanya melakukan satu permintaan yang biasanya mengarah ke hasil benchmarking non-representatif.
Dan -cadalah konkurensi dan menunjukkan jumlah beberapa permintaan yang harus dilakukan dalam satu waktu. Default adalah satu permintaan dalam satu waktu.
Jadi dalam pengujian ini, Apache Bench akan membuat 100 permintaan dengan konkurensi 10 ke server organisasi Apache.
Output
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 www.apache.org (be patient).....done
Server Software: Apache/2.4.7
Server Hostname: www.apache.org
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Document Path: /
Document Length: 58769 bytes
Concurrency Level: 10
Time taken for tests: 1.004 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 5911100 bytes
HTML transferred: 5876900 bytes
Requests per second: 99.56 [#/sec] (mean)
Time per request: 100.444 [ms] (mean)
Time per request: 10.044 [ms] (mean, across all concurrent requests)
Transfer rate: 5747.06 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 39 46 30.9 41 263
Processing: 37 40 21.7 38 255
Waiting: 12 15 21.7 13 230
Total: 77 86 37.5 79 301
Percentage of the requests served within a certain time (ms)
50% 79
66% 79
75% 80
80% 80
90% 82
95% 84
98% 296
99% 301
100% 301 (longest request)
Setelah menjalankan tes pertama kami, akan mudah untuk mengenali pola penggunaan perintah ini yaitu sebagai berikut -
# ab [options .....] URL
dimana,
ab - Perintah Apache Bench
options - bendera untuk tugas tertentu yang ingin kami lakukan
URL - jalur url yang ingin kami uji
Memahami Nilai Output
Kita perlu memahami metrik yang berbeda untuk memahami berbagai nilai keluaran yang dikembalikan oleh ab. Ini dia daftarnya -
Server Software - Ini adalah nama server web yang dikembalikan di header HTTP dari pengembalian pertama yang berhasil.
Server Hostname - Ini adalah alamat DNS atau IP yang diberikan pada baris perintah.
Server Port- Ini adalah port tempat ab terhubung. Jika tidak ada port yang diberikan pada baris perintah, ini akan default ke 80 untuk http dan 443 untuk https.
SSL/TLS Protocol- Ini adalah parameter protokol yang dinegosiasikan antara klien dan server. Ini hanya akan dicetak jika SSL digunakan.
Document Path - Ini adalah URI permintaan yang diurai dari string baris perintah.
Document Length- Ini adalah ukuran dalam byte dari dokumen pertama yang berhasil dikembalikan. Jika panjang dokumen berubah selama pengujian, respon dianggap error.
Concurrency Level - Ini adalah jumlah klien bersamaan (setara dengan browser web) yang digunakan selama pengujian.
Time Taken for Tests - Ini adalah waktu yang diambil dari saat koneksi soket pertama dibuat hingga saat respons terakhir diterima.
Complete Requests - Jumlah tanggapan sukses yang diterima.
Failed Requests- Jumlah permintaan yang dianggap gagal. Jika angkanya lebih besar dari nol, baris lain akan dicetak menunjukkan jumlah permintaan yang gagal karena menghubungkan, membaca, panjang konten yang salah, atau pengecualian.
Total Transferred- Jumlah total byte yang diterima dari server. Jumlah ini pada dasarnya adalah jumlah byte yang dikirim melalui kabel.
HTML Transferred- Jumlah total byte dokumen yang diterima dari server. Jumlah ini tidak termasuk byte yang diterima di header HTTP
Requests per second- Ini adalah jumlah permintaan per detik. Nilai ini adalah hasil pembagian jumlah permintaan dengan total waktu yang dibutuhkan.
Time per request- Waktu rata-rata yang dihabiskan per permintaan. Nilai pertama dihitung dengan rumus konkurensi * timetaken * 1000 / selesai sedangkan nilai kedua dihitung dengan rumus timetaken * 1000 / selesai
Transfer rate - Tingkat transfer dihitung dengan rumus totalread / 1024 / waktu yang diambil.
Analisis Cepat dari Output Pengujian Beban
Setelah mempelajari tentang judul nilai keluaran dari perintah ab, mari kita coba menganalisis dan memahami nilai keluaran untuk pengujian awal kita -
Organisasi Apache menggunakan Perangkat Lunak Server web mereka sendiri - Apache (versi 2.4.7)
Server mendengarkan di Port 443 karena https. Seandainya http, itu akan menjadi 80 (default).
Total data yang ditransfer adalah 58769 byte untuk 100 permintaan.
Tes selesai dalam 1,004 detik. Tidak ada permintaan yang gagal.
Permintaan per detik - 99,56. Ini dianggap angka yang cukup bagus.
Waktu per permintaan - 100,444 md (untuk 10 permintaan bersamaan). Jadi untuk semua permintaan, ini adalah 100.444 ms / 10 = 10.044 ms.
Kecepatan transfer - 1338,39 [Kbytes / detik] diterima.
Dalam statistik waktu koneksi, Anda dapat mengamati bahwa banyak permintaan harus menunggu beberapa detik. Ini mungkin karena server web apache menempatkan permintaan dalam antrian tunggu.
Dalam pengujian pertama kami, kami telah menguji aplikasi (yaitu, www.apache.org) yang dihosting di server yang berbeda. Di bagian selanjutnya dari tutorial, kami akan menguji aplikasi web sampel kami yang dihosting di server yang sama dari mana kami akan menjalankan tes ab. Ini untuk kemudahan pembelajaran dan tujuan demonstrasi. Idealnya, node host dan node pengujian harus berbeda untuk pengukuran yang akurat.
Untuk mempelajari ab dengan lebih baik, Anda harus membandingkan dan mengamati bagaimana nilai keluaran bervariasi untuk berbagai kasus saat kita melanjutkan tutorial ini.
Merencanakan Output dari Apache Bench
Di sini kita akan memplot hasil yang relevan untuk melihat berapa banyak waktu yang dibutuhkan server karena jumlah permintaan meningkat. Untuk itu, kami akan menambahkan file-g opsi di perintah sebelumnya diikuti dengan nama file (di sini out.data) di mana data keluaran ab akan disimpan -
$ ab -n 100 -c 10 -g out.data https://www.apache.org/
Sekarang mari kita lihat out.data sebelum kita membuat plot -
$ less out.data
Output
starttime seconds ctime dtime ttime wait
Tue May 30 12:11:37 2017 1496160697 40 38 77 13
Tue May 30 12:11:37 2017 1496160697 42 38 79 13
Tue May 30 12:11:37 2017 1496160697 41 38 80 13
...
Mari kita sekarang memahami tajuk kolom di out.data file -
starttime - Ini adalah tanggal dan waktu dimulainya panggilan.
seconds - Sama seperti waktu mulai tetapi dalam format stempel waktu Unix (tanggal -d @ 1496160697 mengembalikan keluaran waktu mulai).
ctime - Ini adalah Waktu Koneksi.
dtime - Ini adalah Waktu Proses.
ttime - Ini adalah Total Waktu (itu adalah jumlah dari ctime dan dtime, secara matematis ttime = ctime + dtime).
wait - Ini adalah Waktu Menunggu.
Untuk visualisasi bergambar tentang bagaimana beberapa item ini terkait satu sama lain, lihat gambar berikut -
Jika kami bekerja melalui terminal atau di mana grafik tidak tersedia, gnuplotadalah pilihan yang bagus. Kami akan segera memahaminya dengan melalui langkah-langkah berikut.
Biarkan kami menginstal dan meluncurkan gnuplot -
$ sudo apt-get install gnuplot
$ gnuplot
Output
G N U P L O T
Version 4.6 patchlevel 6 last modified September 2014
Build System: Linux x86_64
Copyright (C) 1986-1993, 1998, 2004, 2007-2014
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
Terminal type set to 'qt'
gnuplot>
Saat kita mengerjakan terminal dan menganggap bahwa grafik tidak tersedia, kita dapat memilih terminal bodoh yang akan memberikan keluaran dalam ASCII melalui terminal itu sendiri. Ini membantu kami mendapatkan gambaran seperti apa plot kami dengan alat cepat ini. Sekarang mari kita siapkan terminal untuk plot ASCII.
gnuplot> set terminal dumb
Output
Terminal type set to 'dumb'
Options are 'feed size 79, 24'
Karena, terminal gnuplot kami sekarang siap untuk plot ASCII, mari kita plot data dari out.data file -
gnuplot> plot "out.data" using 9 w l
Output
1400 ++-----+------+-----+------+------+------+------+-----+------+-----++
+ + + + + + +"out.data" using 9 ****** +
| |
1200 ++ ********************************************
| ******************* |
1000 ++ * ++
| * |
| * |
800 ++ * ++
| * |
| * |
600 ++ * ++
| * |
| * |
400 ++ * ++
| * |
200 ++ * ++
| * |
+**** + + + + + + + + + +
0 ++-----+------+-----+------+------+------+------+-----+------+-----++
0 10 20 30 40 50 60 70 80 90 100
Kami telah memplot waktu t, total waktu (dalam md) dari kolom 9, sehubungan dengan jumlah permintaan. Kita dapat melihat bahwa untuk permintaan sepuluh awal, total waktu itu di hampir 100 ms, selama 30 permintaan berikutnya (dari 10 th sampai 40 th ), meningkat menjadi 1.100 ms, dan sebagainya. Plot Anda harus berbeda tergantung pada Andaout.data.