Saya salah berasumsi bahwa pengujian AB internal saya berarti server saya dapat menangani 1k concurrency @ 3k hits per detik.
Teori saya saat ini adalah bahwa jaringannya adalah hambatan. Server tidak dapat mengirim data dengan cukup cepat.
Pengujian eksternal dari blitz.io pada konkursi 1k menunjukkan hit / s saya berhenti pada 180, dengan halaman yang lebih lama dan lebih lama untuk merespons karena server hanya dapat mengembalikan 180 per detik.
Saya telah menyajikan file kosong dari nginx dan mencadangkannya: ini menskala 1: 1 dengan concurrency.
Sekarang untuk mengesampingkan kemacetan IO / memcached (nginx biasanya menarik dari memcached), saya menyajikan versi statis dari halaman yang di-cache dari sistem file.
Hasilnya sangat mirip dengan tes asli saya; Saya dibatasi sekitar 180 RPS.
Membagi halaman HTML menjadi dua membuat saya menggandakan RPS, jadi pasti dibatasi oleh ukuran halaman.
Jika saya secara internal ApacheBench dari server lokal, saya mendapatkan hasil yang konsisten dari sekitar 4k RPS pada Halaman Penuh dan Halaman Setengah, dengan kecepatan transfer tinggi. Kecepatan transfer: 62586,14 [Kbytes / detik] diterima
Jika saya AB dari server eksternal, saya mendapatkan sekitar 180RPS - sama dengan hasil blitz.io.
Bagaimana saya tahu itu bukan pelambatan yang disengaja?
Jika saya melakukan tolok ukur dari beberapa server eksternal, semua hasil menjadi buruk yang membuat saya percaya bahwa masalahnya ada pada lalu lintas keluar server MY, bukan masalah kecepatan unduhan dengan server pembandingan saya / blitz.io.
Jadi saya kembali ke kesimpulan saya bahwa server saya tidak dapat mengirim data dengan cukup cepat.
Apakah saya benar? Apakah ada cara lain untuk menginterpretasikan data ini? Apakah solusi / pengoptimalan untuk mengatur beberapa server + load balancing yang masing-masing dapat melayani 180 hit per detik?
Saya cukup baru dalam pengoptimalan server, jadi saya menghargai konfirmasi yang menafsirkan data ini.
Lalu lintas keluar
Berikut informasi lebih lanjut tentang bandwidth keluar: Grafik jaringan menunjukkan output maksimum 16 Mb / s: 16 megabit per detik. Sama sekali tidak terdengar.
Karena saran tentang pelambatan, saya melihat ke dalam ini dan menemukan bahwa linode memiliki batas 50mbps (yang saya bahkan tidak dekat dengan memukul, rupanya). Saya memilikinya dinaikkan menjadi 100mbps.
Karena linode membatasi traffic saya, dan saya bahkan tidak memukulnya, apakah ini berarti server saya memang harus mampu menghasilkan hingga 100mbps tetapi dibatasi oleh beberapa hambatan internal lainnya? Saya hanya tidak mengerti bagaimana jaringan pada skala besar ini bekerja; dapatkah mereka benar-benar mengirim data secepat mereka dapat membaca dari HDD? Apakah pipa jaringan itu besar?
Kesimpulannya
1: Berdasarkan hal di atas, saya pikir saya pasti dapat meningkatkan 180RPS saya dengan menambahkan penyeimbang beban nginx di atas pengaturan server multi-nginx tepat 180RPS per server di belakang LB.
2: Jika linode memiliki batas 50 / 100mbit yang tidak saya pukul sama sekali, pasti ada sesuatu yang bisa saya lakukan untuk mencapai batas itu dengan pengaturan server tunggal saya. Jika saya dapat membaca / mengirimkan data secara lokal dengan cepat, dan bahkan tidak perlu memiliki cap 50mbit / 100mbit, pasti ada hambatan internal yang tidak memungkinkan saya mengenai batasan yang saya tidak yakin cara mendeteksi. Benar?
Saya menyadari bahwa pertanyaannya sangat besar dan tidak jelas sekarang, tetapi saya tidak yakin bagaimana memadatkannya. Masukan apa pun dihargai atas kesimpulan yang saya buat.