Alat tolok ukur apache sangat mendasar, dan meskipun itu akan memberi Anda ide yang solid tentang beberapa kinerja, itu adalah ide yang buruk untuk hanya bergantung pada itu jika Anda berencana untuk membuat situs Anda terkena tekanan serius dalam produksi.
Karena itu, inilah parameter yang paling umum dan paling sederhana:
-c
: ("Concurrency"). Menunjukkan berapa banyak klien (orang / pengguna) yang akan mengenai situs pada saat yang bersamaan. Saat ab
berjalan, akan ada -c
klien yang memukul situs. Inilah yang sebenarnya menentukan jumlah stres yang akan diderita situs Anda selama benchmark.
-n
: Menunjukkan berapa banyak permintaan yang akan dibuat. Ini hanya menentukan panjang patokan. Nilai tinggi -n
dengan -c
nilai yang dapat didukung server Anda adalah ide yang baik untuk memastikan bahwa tidak ada hal-hal yang dapat merusak stres berkelanjutan: tidak sama untuk mendukung stres selama 5 detik daripada 5 jam.
-k
: Ini dilakukan oleh browser fungsionalitas "KeepAlive". Anda tidak perlu memberikan nilai karena -k
"boolean" (artinya: ini menunjukkan bahwa Anda ingin agar pengujian Anda menggunakan header Keep Alive dari HTTP dan mempertahankan koneksi). Karena browser melakukan ini dan Anda cenderung ingin mensimulasikan tekanan dan aliran yang akan dimiliki situs Anda dari browser, disarankan Anda melakukan patokan dengan ini.
Argumen terakhir hanyalah tuan rumah. Secara default ia akan menekan http: // protokol jika Anda tidak menentukannya.
ab -k -c 350 -n 20000 example.com/
Dengan mengeluarkan perintah di atas, Anda akan mencapai http://example.com/ dengan 350 koneksi simultan hingga 20 ribu permintaan terpenuhi. Ini akan dilakukan dengan menggunakan header tetap hidup.
Setelah proses menyelesaikan 20 ribu permintaan, Anda akan menerima umpan balik tentang statistik. Ini akan memberi tahu Anda seberapa baik kinerja situs di bawah tekanan yang Anda berikan ketika menggunakan parameter di atas.
Untuk mengetahui berapa banyak orang yang dapat ditangani situs pada saat yang sama, lihat saja apakah waktu respons (berarti, waktu respons minimum dan maksimum, permintaan gagal, dll.) Adalah angka yang dapat diterima oleh situs Anda (situs yang berbeda mungkin menginginkan kecepatan yang berbeda). Anda dapat menjalankan alat dengan nilai-c yang berbeda hingga Anda mencapai titik di mana Anda mengatakan "Jika saya meningkatkannya, itu mulai mendapatkan permintaan yang gagal dan rusak".
Bergantung pada situs web Anda, Anda akan mengharapkan jumlah permintaan rata-rata per menit. Ini sangat bervariasi, Anda tidak akan dapat mensimulasikan ini dengan ab. Namun, pikirkan seperti ini: Jika pengguna rata-rata Anda akan mencapai 5 permintaan per menit dan waktu respons rata-rata yang Anda temukan valid adalah 2 detik, itu berarti bahwa 10 detik dari satu menit 1 pengguna akan diminta, yang berarti hanya 1/6 dari waktu itu akan mengenai situs. Ini juga berarti bahwa jika Anda memiliki 6 pengguna yang memukul situs dengan ab secara bersamaan, Anda cenderung memiliki 36 pengguna dalam simulasi, meskipun tingkat concurrency Anda (-c) hanya 6.
Ini tergantung pada perilaku yang Anda harapkan dari pengguna Anda menggunakan situs ini, tetapi Anda bisa mendapatkannya dari "Saya berharap pengguna saya mencapai permintaan X per menit dan saya menganggap waktu respons rata-rata valid jika 2 detik". Kemudian, cukup modifikasi level -c Anda sampai Anda mencapai 2 detik waktu respon rata-rata (tetapi pastikan waktu respons maksimum dan stddev masih valid) dan lihat seberapa besar Anda dapat membuat -c.
Saya harap saya menjelaskan ini dengan jelas :) Selamat mencoba
-l
opsi jika halaman memiliki konten yang dinamis, sehingga Anda tidak mendapatkan banyak permintaan yang gagal karena panjangnya konten berbeda antara permintaan.Tes paling sederhana yang dapat Anda lakukan adalah melakukan 1000 permintaan, 10 sekaligus (yang kira-kira mensimulasikan 10 pengguna bersamaan yang masing-masing mendapatkan 100 halaman - selama pengujian).
-n 1000
adalah jumlah permintaan yang harus dibuat.-c 10
memberi tahu AB untuk melakukan 10 permintaan sekaligus, alih-alih 1 permintaan sekaligus, untuk mensimulasikan lebih baik pengunjung konkuren (vs pengunjung berurutan).-k
mengirimkanKeepAlive
header, yang meminta server web untuk tidak mematikan koneksi setelah setiap permintaan dilakukan, tetapi tetap menggunakannya kembali.Saya juga mengirim tajuk tambahan
Accept-Encoding: gzip, deflate
karena mod_deflate hampir selalu digunakan untuk mengompresi keluaran teks / html 25% -75% - efeknya tidak boleh diabaikan karena berdampak pada kinerja keseluruhan server web (yaitu, dapat mentransfer 2x data dalam jumlah waktu yang sama, dll).Hasil:
Untuk interpretasi yang paling sederhana, abaikan semuanya TETAPI baris ini:
Lipat gandakan dengan 60, dan Anda memiliki permintaan Anda per menit.
Untuk mendapatkan hasil dunia nyata, Anda ingin menguji Wordpress alih-alih beberapa file HTML atau index.php statis karena Anda perlu tahu bagaimana semuanya bekerja bersama-sama: termasuk kode PHP yang rumit, dan beberapa permintaan MySQL ...
Sebagai contoh di sini adalah hasil pengujian instalasi baru Wordpress pada sistem yang sama dan lingkungan WAMP (Saya menggunakan WampDeveloper, tetapi ada juga Xampp, WampServer, dan lainnya) ...
Itu 37x lebih lambat sekarang!
Setelah uji beban, ada sejumlah hal yang dapat Anda lakukan untuk meningkatkan kinerja keseluruhan (Permintaan Per Detik), dan juga membuat server web lebih stabil di bawah beban yang lebih besar (mis., Meningkatkan
-n
dan-c
cenderung menabrak Apache), yang Anda bisa baca di sini:Muat Pengujian Apache dengan AB (Apache Bench)
sumber
Langkah-langkah untuk mengatur Apache Bench (AB) di windows (IMO - Recommended).
Langkah 1 - Instal Xampp.
Langkah 2 - Buka CMD.
Langkah 3 - Pergi ke tujuan bangku apache (
cd C:\xampp\apache\bin
) dari CMDLangkah 4 - Tempel perintah (
ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
)Langkah 5 - Tunggu. Anda selesai
sumber
Saya juga ingin tahu apakah saya dapat mengukur kecepatan skrip saya dengan apache abs atau skrip ukur konstruk / destruksi php atau ekstensi php.
dua yang terakhir telah gagal untuk saya: mereka adalah perkiraan. setelah itu saya berpikir untuk mencoba "ab" dan "abs".
perintah "ab -k -c 350 -n 20000 example.com/" cantik karena semuanya lebih mudah!
tetapi apakah ada yang berpikir untuk "localhost" di server apache misalnya www.apachefriends.org?
Anda harus membuat folder seperti "bangku" di root di mana Anda memiliki 2 file: test "bench.php" dan referensi "void.php".
dan kemudian: patok!
bench.php
void.php
pada Desktop Anda, Anda harus menggunakan file .bat (di Windows) seperti ini:
bangku
Sekarang jika Anda memperhatikan dengan cermat ...
skrip kosong tidak menghasilkan hasil nol !!! JADI KESIMPULAN ADALAH: dari hasil kedua hasil pertama harus dikurangi !!!
di sini saya mendapat:
90-17 = 73 hasil yang saya harapkan!
sumber
Memuat pengujian API Anda dengan menggunakan ab saja tidak cukup. Namun, saya pikir ini adalah alat yang hebat untuk memberi Anda ide dasar bagaimana kinerja situs Anda.
Jika Anda ingin menggunakan perintah ab untuk menguji beberapa titik akhir API, dengan data yang berbeda, semuanya pada saat yang sama di latar belakang, Anda perlu menggunakan perintah "nohup". Ini menjalankan perintah apa pun bahkan ketika Anda menutup terminal.
Saya menulis sebuah skrip sederhana yang mengotomatiskan seluruh proses, jangan ragu untuk menggunakannya: http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-ini-simple-shell-script
sumber