Untuk melakukan beberapa pengujian beban, untuk rasa ingin tahu saya sendiri, di server saya, saya menjalankan:
ab -kc 50 -t 200 http://localhost/index.php
Ini membuka 50 koneksi tetap hidup selama 200 detik dan hanya membanting server saya dengan permintaan untuk index.php
Dalam hasil saya, saya mendapatkan:
Concurrency Level: 50
Time taken for tests: 200.007 seconds
Complete requests: 33106
Failed requests: 32951
(Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 1948268960 bytes
HTML transferred: 1938001392 bytes
Requests per second: 165.52 [#/sec] (mean)
Time per request: 302.071 [ms] (mean)
Time per request: 6.041 [ms] (mean, across all concurrent requests)
Transfer rate: 9512.69 [Kbytes/sec] received
Perhatikan permintaan 32951 "gagal". Saya tidak tahu ini.
Saat tes sedang berjalan, saya dapat mengakses situs web saya dari komputer di rumah dengan sempurna, meskipun waktu pemuatan halaman di bagian bawah halaman dilaporkan sebagai 0,5 bukannya biasa 0,02. Namun saya tidak pernah memiliki permintaan yang gagal.
Jadi mengapa AB melaporkan bahwa setengah dari koneksi gagal? Dan apa arti "Panjang:" dalam konteks itu?
benchmarking
load-testing
apachebench
Benjamin
sumber
sumber
Jawaban:
Lupakan. "Kegagalan panjang" hanya menunjukkan bahwa sekitar separuh waktu lamanya tanggapan berbeda.
Karena isinya dinamis, mungkin pengidentifikasi sesi atau semacamnya.
sumber
Untuk menggambarkan masalah dengan kata lain:
Alat benchmarking apache (ab) mengasumsikan bahwa panjang konten respon akan sama selama seluruh pengujian. Ini menyimpan panjang konten tanggapan pertama. Jika ada tanggapan lebih lanjut yang memiliki panjang konten berbeda, mereka menghasilkan "kegagalan panjang".
Laporan bug apache berikut tampaknya mengonfirmasi bahwa: ASF Bug 42040
Ringkasan : Jika Anda menayangkan konten dengan panjang variabel apa pun, Anda mungkin harus mengabaikan kegagalan permintaan semacam ini.
Sunting : Baru-baru ini saya perhatikan bahwa
ab
perintah memiliki opsi baru (setidaknya untuk saya):Saya dapat melihatnya di ab Versi 2.3 <$ Revisi: 1528965 $> tetapi tidak dapat melihatnya di ab Versi 2.3 <$ Revisi: 655654 $> , jadi itu mungkin ditambahkan relatif baru-baru ini.
sumber
Maaf telah membangkitkan kembali pertanyaan lama, tetapi itu adalah pertanyaan pertama yang muncul di Google. Kadang-kadang kesalahan panjang yang dilaporkan oleh ab mungkin disebabkan oleh masalah nyata: jika koneksi ditutup sisi server sebelum jumlah total byte yang dinyatakan dalam header Panjang Konten belum diterima oleh klien. Itu bisa terjadi jika ada pihak lain antara klien dan server, misalnya, penyeimbang beban buatan tangan naif (kasus saya).
sumber