AWS, Bandwidth, dan pengiriman konten

31

Pertanyaan saya adalah tentang Mesin Virtual dan mengirimkan konten mereka melalui koneksi server ke internet.

Saya memiliki instance windows Ec2, dan koneksi jaringannya tampaknya 100mbps

Jika saya akan mengirimkan konten dari instance EC2 itu, apakah ITU potensi kemacetan saya?

Bagaimana s3 berbeda, saya kira mereka bukan hambatan potensial keluar nyata dengan s3?

Catatan: Saya tahu s3 dan CDN mereka akan lebih baik untuk konten statis, namun saya perlu menjelajahi situasi ini untuk saat ini. Halaman HTML kami perlu mengakses halaman sisi server melalui AJAX, dan karena tidak ada solusi anti-bom untuk saat ini, konten kami dan server kami harus berada pada domain yang persis sama, sehingga aturannya menggunakan S3.

Bandwidth diperlukan: Saya tidak yakin, kami dapat memiliki hingga 100 pengguna mengunduh video kapan saja, mungkin tidak lebih. Video bisa masing-masing hingga 5mb, tetapi mereka akan melihat hingga 20.

Keeno
sumber
"Kami membutuhkan HTML kami untuk mengakses proxy melalui JS" ... Apa artinya itu?
Eric Hammond
Berapa banyak bandwidth yang Anda harapkan perlu digunakan pada saat puncak?
Eric Hammond
@EricHammond Saya telah memperbarui pertanyaan saya dengan beberapa info lagi
Keeno
Bagi saya tidak terdengar seperti Anda memiliki alasan khusus untuk menjadi hiper fokus pada potensi kemacetan tertentu pada saat ini. Bangun layanan Anda menggunakan praktik terbaik umum untuk skalabilitas dan kemudian selidiki dan selesaikan masalah kinerja saat masalah itu muncul. Sajikan video melalui CDN.
Eric Hammond
1
Keeno: Saya kenal dengan kebijakan asal yang sama di JS, tetapi masih tidak melihat mengapa itu akan mencegah Anda menyajikan konten video dengan domain yang berbeda (CDN). Ini adalah praktik umum.
Eric Hammond

Jawaban:

60

Saya tidak dapat berbicara untuk instance Windows, tetapi saya akan menganggap bahwa karakteristik dasar mereka cukup mirip dengan instance Linux.

Perkiraan Anda untuk penggunaan bandwidth adalah 100 unduhan video secara bersamaan (Saya tidak yakin apakah maksud Anda mengunduh file atau streaming video - saya akan menganggap yang terakhir). Jika kami mengambil kecepatan aliran 512kbps, Anda membutuhkan sekitar 51Mbit / s atau 6,5MB / s.

Mesin virtual EC2 berbeda dalam kinerja I / O mereka (yang termasuk bandwidth). Ada 3 level kinerja I / O: rendah, sedang, dan tinggi. Perlu diingat, bahwa disk I / O (yaitu dari volume EBS) juga tergantung bandwidth. Anda hanya dapat benar-benar mempertimbangkan bandwidth dalam jaringan EC2 (karena akan sepenuhnya bervariasi melalui Internet).

Beberapa angka tipikal untuk menghitung 'rendah', 'sedang', dan 'tinggi' (sumber yang berbeda mengutip angka yang berbeda untuk nilai-nilai teoretis, sehingga mereka mungkin tidak sepenuhnya akurat).

Tinggi: Teoretis: 1Gbps = 125MB / s; Realistis ( sumber ): 750Mbps = 95MB / s

Sedang: Teoritis: 250Mbps; Realistis ( sumber, p57 ): 80Mbps = 10MB / s

Rendah: Teoretis: 100Mbps; Realistis (dari tes saya sendiri): 10-15Mbps = 1-2MB / s

(Sebenarnya ada level yang 'sangat tinggi' juga (10Gbps teoretis) tetapi itu hanya berlaku untuk cluster compute instances only).

Poin selanjutnya adalah tingkat variasi. Pada contoh yang lebih kecil, ada lebih banyak variabilitas dalam kinerja karena komponen fisik dibagi di antara lebih banyak mesin virtual. Apapun, Anda dapat mengharapkan sekitar +/- 20% variasi dalam kinerja Anda (sumber: 1 , 2 , 3 ). Dalam kasus Anda (sesuai dengan asumsi / perhitungan di atas), Anda mungkin memerlukan bandwidth puncak 13MB / s (double 6.5MBps, karena disk I / O juga terbatas jaringan). Jika Anda mentransfer konten bandwidth yang lebih rendah, Anda harus dapat menggunakan instance dengan kinerja I / O 'moderat' (lihat halaman jenis instance), jika perhitungan Anda menghasilkan kebutuhan bandwidth yang lebih tinggi, Anda akan memerlukan instance dengan kinerja I / O 'tinggi'. Cukup streaming data tidak boleh terikat CPU atau memori, tetapi mempertahankan 100 koneksi simultan mungkin akan memerlukan setidaknya contoh berukuran sedang - dan jika bandwidth menjadi perhatian, berdasarkan hal di atas, contoh besar akan menjadi taruhan yang lebih aman).

Saya akan merekomendasikan pembandingan server yang Anda luncurkan untuk melihat apakah mereka memenuhi kebutuhan Anda (dihitung). Luncurkan dua instance (dari jenis yang sama) dan jalankan iperfdi setiap menggunakan alamat IP pribadi instances - Anda perlu membuka port 5001 di grup keamanan Anda jika Anda menjalankannya dengan pengaturan default). Selain itu, sebagian besar tes di luar jaringan EC2 menunjukkan hasil antara 80-130Mbps (contoh besar) - meskipun angka tersebut tidak selalu berarti.

CDN akan lebih sesuai dengan kebutuhan Anda, jika pengaturan Anda mengizinkannya. S3 tampaknya memiliki batas sekitar 50MB / s untuk bandwidth (setidaknya dari satu instance) sesuai artikel ini , tetapi itu lebih tinggi dari yang seharusnya Anda butuhkan (S3 tidak mendukung streaming). Cloudfront akan lebih cocok untuk tugas Anda (karena dirancang sebagai CDN) dan mendukung 1000Mbps = 125MB / s secara default ( sumber ) dengan bandwidth yang lebih tinggi tersedia berdasarkan permintaan dan dapat mengalirkan konten juga)

cyberx86
sumber
Di mana Anda mendapatkan nilai Mbps "teoretis" Anda? Saya tidak dapat menemukan sumber dokumentasi resmi atau tidak resmi untuk angka-angka ini.
dtheodor
4
Angka-angka itu mungkin sangat berbeda sekarang (dan saya sepertinya tidak bisa melacak sumber untuk mereka saat ini). Banyak yang telah berubah dalam 4 tahun. Diketahui bahwa EC2 memiliki 10Gbps interkoneksi dalam kelompok cluster. AWS dulu (pada 2007) mengutip angka bandwidth lokal berdedikasi 250Mbps. Saat ini, bandwidth jaringan dibagi antara instance, dengan prioritas dialokasikan berdasarkan jenis instance (dan mungkin faktor optimasi EBS tersebut). Setidaknya sebagian, ukuran instance menentukan berapa banyak instance lain yang Anda bagikan sumber daya. Jika jaringan tidak digunakan, mesin virtual Anda mendapat bagian yang lebih besar.
cyberx86
Maaf, ini di luar topik, tapi saya tidak tahu bagaimana cara menghubungi @ cyberx86 tetapi hanya memberi tahu Anda bahwa ssl cert untuk situs web Anda kedaluwarsa sedikit lebih dari seminggu yang lalu. Permintaan maaf untuk berkomentar di sini, tetapi tidak dapat menemukan alamat email untuk Anda.
Kevin Lyda
1
@KevinLyda Terima kasih. Meskipun saya tahu bahwa sertifikat telah kedaluwarsa, situs itu belum diperbarui untuk beberapa waktu - jadi ini adalah kesempatan yang baik untuk bermigrasi ke pembaruan otomatis dengan LetsEncrypt.
cyberx86
Yap, sudah menggunakannya sendiri. Sangat mudah untuk skrip (terutama dengan klien non-resmi) dan mulai bekerja di latar belakang.
Kevin Lyda
0

Angka-angka tampaknya berubah dari waktu ke waktu dan karena jumlah jenis instance yang berbeda berkembang biak. Tetapi sejumlah orang memposting tolok ukur. Saya sudah beruntung dengan googling [instance category] ec2 network benchmark.

Sebagai contoh, saya ingin mengetahui bandwidth dari sebuah m4.xlargeinstance, jadi saya mencari ec2 m4 network benchmark. Saya menemukan hasil tes ini dari blog rekayasa Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Simon Woodside
sumber