Jawaban singkatnya adalah: Tidak ada yang bisa menjawab pertanyaan ini kecuali Anda.
Jawaban panjangnya adalah menentukan tolok ukur beban kerja spesifik Anda adalah sesuatu yang perlu Anda lakukan sendiri, karena itu seperti bertanya "Berapa lama seutas tali?".
Situs web statis satu halaman sederhana dapat di-host di Pentium Pro 150 dan masih melayani ribuan tayangan setiap hari.
Pendekatan dasar yang perlu Anda ambil untuk menjawab pertanyaan ini adalah dengan mencobanya dan melihat apa yang terjadi. Ada banyak alat yang dapat Anda gunakan untuk secara buatan menempatkan sistem Anda di bawah tekanan untuk melihat di mana gesper.
Gambaran singkat tentang ini adalah:
- Taruh skenario Anda di tempat
- Tambahkan pemantauan
- Tambahkan lalu lintas
- Evaluasi hasil
- Remediasi berdasarkan hasil
- Bilas, ulangi sampai cukup bahagia
Taruh skenario Anda di tempat
Pada dasarnya, untuk menguji beberapa beban, Anda memerlukan sesuatu untuk diuji. Siapkan lingkungan untuk diuji. Ini harus menjadi tebakan yang cukup dekat dengan perangkat keras produksi Anda jika memungkinkan, jika tidak, Anda akan dibiarkan memperkirakan data Anda.
Siapkan server, akun, situs web, bandwidth, dll. Bahkan jika Anda melakukan ini pada VM tidak apa-apa asalkan Anda siap untuk mengukur hasil Anda.
Jadi, saya akan menyiapkan mesin virtual bertenaga menengah (dua core, RAM 512 MB, HDD 4 GB) dan menginstal load balancer favorit saya, haproxy
di dalam Red Hat Linux di VM.
Saya juga akan memiliki dua server web di belakang load balancer yang akan saya gunakan untuk stress test load balancer. Kedua server web ini diatur secara identik ke sistem live saya.
Tambahkan Pemantauan
Anda perlu beberapa metrik untuk dipantau, jadi saya akan mengukur berapa banyak permintaan yang masuk ke server web saya, dan berapa banyak permintaan yang dapat saya peras per detik sebelum pengguna mulai mendapatkan waktu respons lebih dari dua detik.
Saya juga akan memonitor penggunaan RAM, CPU dan disk pada haproxy
contoh untuk memastikan bahwa penyeimbang beban dapat menangani koneksi.
Cara melakukan ini sangat tergantung pada platform Anda dan berada di luar cakupan jawaban ini. Anda mungkin perlu meninjau file log server web, memulai penghitung kinerja, atau mengandalkan kemampuan pelaporan alat pengujian stres Anda.
Beberapa hal yang selalu ingin Anda pantau:
- penggunaan CPU
- Penggunaan RAM
- Penggunaan disk
- Latensi disk
- Pemanfaatan jaringan
Anda mungkin juga memilih untuk melihat kebuntuan SQL, mencari waktu, dll, tergantung pada apa yang Anda uji khusus.
Tambahkan lalu lintas
Di sinilah segalanya menjadi menyenangkan. Sekarang Anda perlu mensimulasikan beban uji. Ada banyak alat yang dapat melakukan ini, dengan opsi yang dapat dikonfigurasi:
Pilih nomor, nomor apa saja. Katakanlah Anda akan melihat bagaimana sistem merespons dengan 10.000 hit per menit. Tidak masalah nomor apa yang Anda pilih karena Anda akan mengulangi langkah ini berkali-kali, menyesuaikan angka itu ke atas atau ke bawah untuk melihat bagaimana sistem merespons.
Idealnya, Anda harus mendistribusikan 10.000 permintaan ini melalui beberapa klien pengujian / node sehingga satu klien tidak menjadi hambatan permintaan. Misalnya, Pengujian Jarak Jauh JMeter menyediakan antarmuka pusat untuk meluncurkan beberapa klien dari mesin Jmeter yang mengendalikan.
Tekan tombol Go ajaib dan saksikan server web Anda mencair dan macet.
Evaluasi hasil
Jadi, sekarang Anda harus kembali ke metrik yang Anda kumpulkan di langkah 2. Anda melihat bahwa dengan 10.000 koneksi bersamaan, haproxy
kotak Anda hampir tidak berkeringat, tetapi waktu respons dengan dua server web adalah sentuhan selama lima detik. Itu tidak keren - ingat, waktu respons Anda bertujuan selama dua detik. Jadi, kita perlu melakukan beberapa perubahan.
Remediasi
Sekarang, Anda perlu mempercepat situs web Anda lebih dari dua kali. Jadi, Anda tahu bahwa Anda perlu memperbesar atau memperkecil.
Untuk meningkatkan, dapatkan server web yang lebih besar, lebih banyak RAM, disk lebih cepat.
Untuk meningkatkan skala, dapatkan lebih banyak server.
Gunakan metrik Anda dari langkah 2, dan pengujian, untuk membuat keputusan ini. Misalnya, jika Anda melihat bahwa latensi disk sangat besar selama pengujian, Anda tahu Anda perlu meningkatkan dan mendapatkan hard drive lebih cepat.
Jika Anda melihat bahwa prosesor berada pada 100% selama pengujian, mungkin Anda perlu meningkatkan skala untuk menambahkan server web tambahan untuk mengurangi tekanan pada server yang ada.
Tidak ada jawaban benar atau salah yang umum, hanya ada yang tepat untuk Anda. Coba tingkatkan, dan jika itu tidak berhasil, gunakan skala. Atau tidak, itu terserah Anda dan beberapa pemikiran di luar kotak.
Katakanlah kita akan meningkatkan skala. Jadi saya memutuskan untuk mengkloning dua server web saya (mereka adalah VM) dan sekarang saya memiliki empat server web.
Bilas, ulangi
Mulai lagi dari Langkah 3. Jika Anda mendapati hal-hal tidak berjalan seperti yang Anda harapkan (misalnya, kami menggandakan server web, tetapi waktu responsnya masih lebih dari dua detik), kemudian lihat kemacetan lainnya. Misalnya, Anda menggandakan server web, tetapi masih memiliki server database yang jelek. Atau, Anda mengkloning lebih banyak VM, tetapi karena mereka berada di host fisik yang sama, Anda hanya mencapai pertengkaran yang lebih tinggi untuk sumber daya server.
Anda kemudian dapat menggunakan prosedur ini untuk menguji bagian lain dari sistem. Alih-alih memukul penyeimbang beban, coba tekan server web secara langsung, atau server SQL menggunakan alat tolok ukur SQL .