Menentukan ukuran realistis permintaan per detik untuk server web

15

Saya menyiapkan tumpukan nginx dan mengoptimalkan konfigurasi sebelum ditayangkan. Menjalankan untuk menguji mesin, saya kecewa melihat hal-hal topping pada 150 permintaan per detik dengan sejumlah besar permintaan mengambil> 1 detik untuk kembali. Anehnya, mesin itu sendiri bahkan tidak terengah-engah.

Saya akhirnya berpikir untuk melakukan ping kotak dan melihat waktu ping sekitar 100-125 ms. (Mesin, yang mengejutkan saya, ada di seluruh negeri). Jadi, sepertinya latensi jaringan mendominasi pengujian saya. Menjalankan tes yang sama dari mesin di jaringan yang sama dengan server (waktu ping <1ms) dan saya melihat> 5000 permintaan per detik, yang lebih sesuai dengan apa yang saya harapkan dari mesin.

Tapi ini membuat saya berpikir: Bagaimana cara saya menentukan dan melaporkan ukuran "realistis" dari permintaan per detik untuk server web? Anda selalu melihat klaim tentang kinerja, tetapi bukankah latensi jaringan harus dipertimbangkan? Tentu saya bisa melayani 5.000 permintaan per detik ke mesin di sebelah server, tetapi tidak ke mesin di seluruh negeri. Jika saya memiliki banyak koneksi yang lambat, mereka pada akhirnya akan berdampak pada kinerja server saya, bukan? Atau apakah saya menganggap semua ini salah?

Maafkan saya jika ini adalah teknik jaringan 101 hal. Saya seorang pengembang berdasarkan perdagangan.

Pembaruan: Diedit untuk kejelasan.

Mengenakan
sumber
abmemiliki opsi konkurensi. Anda mengaturnya untuk apa? Juga, jika Anda menguji dari koneksi ADSL domestik, tes kemungkinan akan didominasi oleh bandwidth Anda dan tidak akan menguji apa pun di server sama sekali.
Ladadadada
Saya terbiasa dengan opsi konkurensi ab dan mencoba berbagai nilai untuk menemukan batas-batas kotak. Seperti yang saya tulis di atas, saya mengerti bahwa tes awal saya didominasi oleh jaringan dan tidak mencerminkan kemampuan server. Tetapi pertanyaan saya masih ada: Di mana kebanyakan orang menjalankan tes mereka untuk mendapatkan metrik realistis? Pengujian dijalankan dari kotak di jaringan yang sama dengan server (secara efektif menghilangkan latensi jaringan dari persamaan) mengembalikan angka yang besar, tetapi angka tersebut tidak tampak seperti angka "wajar" karena pengguna sebenarnya akan datang dari luar jaringan.
Don
Tes yang dijalankan dari jaringan yang sama mungkin sebenarnya lebih 'adil' karena pada dasarnya mengabaikan jaringan. Pengguna Anda kemungkinan besar semua berada di jaringan yang berbeda - sehingga bandwidth gabungan dari semua jaringan tersebut harus dengan mudah melebihi bandwidth yang tersedia di server Anda. Mempertimbangkan semua pengguna bersama-sama, bottleneck karena itu adalah kemampuan server - sedangkan mempertimbangkan pengguna individu, bottleneck mungkin adalah bandwidth pengguna tunggal. (Tes yang ideal, mungkin, akan dijalankan dari beberapa lokasi terpencil untuk mensimulasikan keadaan aktual yang terbaik, meskipun, sebagian besar kasus seharusnya tidak memerlukan itu).
cyberx86
"Mempertimbangkan semua pengguna bersama-sama, hambatannya adalah kemampuan server" - itu masuk akal dan sepertinya cara yang tepat untuk memikirkannya. Saya kira server bisa duduk di belakang peralatan jaringan jelek, membatasi tingkat responsnya ke dunia luar, tapi itu tidak benar-benar masalah server dan perlu ditangani secara terpisah. Sesuatu seperti Pingdom dapat digunakan untuk menjalankan tes ideal, kurasa.
Don

Jawaban:

3

Jika Anda peduli dengan kinerja server Anda ketika diakses dari suatu tempat di dunia, mintalah seorang teman di suatu tempat di dunia (harus memiliki bandwidth yang baik) untuk menginstal sproxy + siege pada kotak linux-nya. Cukup unduh, konfigurasikan, buat. Alat-alat ini kecil, mereka dikompilasi dalam hitungan detik.

Pertama, mulai sproxydari kotak linux. Secara default, ini akan berjalan pada port 9001 di localhost (127.0.0.1). Jika Anda ingin mengaksesnya dari luar, cukup berikan alamat ip keluar sebagai parameter.
Sekarang terhubung ke sproxy dengan mengatur browser Anda untuk menggunakan ip dan port ini sebagai proxy untuk HTTP. Semua yang Anda lakukan mulai sekarang direkam dengan sproxy dan dapat diputar ulang nanti. Sekarang menjelajahi situs Anda, lakukan hal-hal yang akan dilakukan pelanggan Anda dan coba lakukan hal-hal "mahal" yang menggunakan server Anda.
Setelah selesai, akhiri sproxy dengan menekan CTRL ^ C. Itu merekam tindakan Anda ke $HOME/urls.txt. Pindahkan file ke tempat pengepungan berada. Untuk memulai pengujian stres, jalankan siege -f urls.txt -d NUM -c NUM. dsingkatan dari penundaan antara permintaan, saat melakukan tes kinerja, gunakan 1 (detik).csingkatan dari jumlah pengguna bersamaan yang disimulasikan. Pilih sesuka hati, tetapi mulai rendah. Siege akan menunjukkan jumlah transaksi per detik, kesalahan, berapa lama rata-rata permintaan, dll. Ini adalah alat yang kuat dan mudah digunakan.
Jika Anda membutuhkan info lebih lanjut tentang parameter (ada banyak), periksa pengepungan panduan suatu yang pengguna sproxy

Untuk mendapatkan hasil yang lebih realistis, biarkan banyak orang menguji server Anda dari berbagai negara sekaligus dan biarkan mereka mengirimkan statistiknya kepada Anda.

SebiF
sumber
2

Permintaan / ukuran realistis harus diambil dari log akses. IMO, latensi permintaan tidak ada hubungannya dengan beban server, karena server memproses semua permintaan pada kecepatan yang sama terlepas dari asalnya.

ejaenv
sumber
1

Pertimbangkan untuk menggunakan layanan seperti Soasta Cloudtest . Dengan itu Anda bisa mendapatkan laporan yang cukup rinci tentang tes Anda dan Anda dapat menjalankan tes kinerja dari berbagai penyedia cloud / virtualisasi publik. Anda dapat mengkonfigurasi seberapa keras dan untuk berapa lama Anda ingin memalu server Anda. Mereka juga memiliki versi " lite " gratis sehingga Anda dapat melihat apa yang dapat dilakukan sebelum melakukan uang.

Mxx
sumber