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.