AWS แบนด์วิดท์และการส่งเนื้อหา


31

คำถามของฉันเกี่ยวกับเครื่องเสมือนจริงและส่งเนื้อหาผ่านการเชื่อมต่อเซิร์ฟเวอร์กับอินเทอร์เน็ต

ฉันมีอินสแตนซ์ของ Ec2 windows และการเชื่อมต่อเครือข่ายของมันดูเหมือนจะเป็น 100mbps

ถ้าฉันจะส่งเนื้อหาจากอินสแตนซ์ EC2 นั้นนั่นเป็นปัญหาคอขวดของฉันหรือไม่

s3 แตกต่างกันอย่างไรฉันเดาว่าไม่มีคอขวดขาออกที่อาจเกิดขึ้นจริงด้วย s3

หมายเหตุ: ฉันรู้ s3 และ CDN ของพวกเขาจะดีกว่าสำหรับเนื้อหาแบบสแตติก แต่ฉันต้องสำรวจสถานการณ์นี้ในตอนนี้ หน้า HTML ของเราจำเป็นต้องเข้าถึงหน้าฝั่งเซิร์ฟเวอร์ผ่าน AJAX และเนื่องจากไม่มีการวางระเบิดในช่วงนี้เนื้อหาของเราและเซิร์ฟเวอร์ของเราต้องอยู่ในโดเมนเดียวกันดังนั้นจึงใช้ S3

จำเป็นต้องใช้แบนด์วิดท์: ฉันไม่แน่ใจเราสามารถมีผู้ใช้สูงสุด 100 คนที่ดาวน์โหลดวิดีโอได้ตลอดเวลาอาจจะไม่มีอีกต่อไป วิดีโอแต่ละรายการสามารถมีขนาดสูงสุด 5mb แต่จะสามารถดูได้สูงสุด 20


"เราต้องการ HTML ของเราในการเข้าถึงพรอกซีผ่านทาง JS" ... นั่นหมายความว่าอย่างไร
Eric Hammond

คุณคาดหวังให้ใช้แบนด์วิดท์เป็นจำนวนเท่าใด
Eric Hammond

@EricHammond ฉันได้อัปเดตคำถามของฉันพร้อมกับข้อมูลเพิ่มเติม
Keeno

ฉันไม่ได้ฟังดูเหมือนว่าคุณมีเหตุผลเฉพาะใด ๆ ที่จะเน้นมากเกินไปในคอขวดที่มีศักยภาพเฉพาะ ณ จุดนี้ สร้างบริการของคุณโดยใช้แนวทางปฏิบัติที่ดีที่สุดเพื่อขยายขีดความสามารถจากนั้นตรวจสอบและแก้ไขปัญหาด้านประสิทธิภาพเมื่อเกิดขึ้น ให้บริการวิดีโอผ่าน CDN
Eric Hammond

1
Keeno: ฉันคุ้นเคยกับนโยบายกำเนิดเดียวกันใน JS แต่ก็ยังไม่เห็นสาเหตุที่ทำให้คุณไม่สามารถแสดงเนื้อหาวิดีโอด้วยโดเมนอื่น (CDN) นี่คือการปฏิบัติทั่วไป
Eric Hammond

คำตอบ:


60

ฉันไม่สามารถพูดกับอินสแตนซ์ของ Windows ได้ แต่ฉันจะเข้าใจว่าลักษณะพื้นฐานของมันนั้นค่อนข้างคล้ายคลึงกับอินสแตนซ์ของ Linux

ค่าประมาณสำหรับการใช้แบนด์วิดท์ของคุณคือการดาวน์โหลดวิดีโอพร้อมกัน 100 ครั้ง (ฉันไม่แน่ใจว่าคุณหมายถึงการดาวน์โหลดไฟล์หรือสตรีมมิ่งวิดีโอหรือไม่ - ฉันจะถือว่าภายหลัง) หากเราใช้อัตราสตรีม 512kbps คุณต้องมี 51Mbit / s หรือ 6.5MB / s

อินสแตนซ์ EC2 แตกต่างกันในประสิทธิภาพของ I / O (ซึ่งรวมถึงแบนด์วิดท์) ประสิทธิภาพของ I / O มี 3 ระดับ: ต่ำปานกลางและสูง โปรดจำไว้ว่าดิสก์ I / O นั้น (เช่นจากโวลุ่ม EBS) นั้นขึ้นอยู่กับแบนด์วิดท์ด้วย คุณสามารถพิจารณาแบนด์วิดท์ภายในเครือข่าย EC2 เท่านั้น (เนื่องจากตัวแปรนั้นจะสมบูรณ์ผ่านอินเทอร์เน็ต)

ตัวเลขทั่วไปจำนวนหนึ่งเพื่อหาปริมาณ 'ต่ำ', 'กลาง' และ 'สูง' (แหล่งที่มาที่แตกต่างกันอ้างถึงตัวเลขที่แตกต่างกันสำหรับค่าทางทฤษฎีดังนั้นพวกเขาอาจไม่แม่นยำอย่างสมบูรณ์)

สูง: ตาม ทฤษฎี: 1Gbps = 125MB / s; สมจริง ( แหล่งที่มา ): 750Mbps = 95MB / s

ปานกลาง: ตาม ทฤษฎี: 250Mbps สมจริง ( แหล่งที่มา, p57 ): 80Mbps = 10MB / s

ต่ำ: ตาม ทฤษฎี: 100Mbps; สมจริง (จากการทดสอบของฉันเอง): 10-15Mbps = 1-2MB / s

(จริง ๆ แล้วมีระดับ 'สูงมาก' เช่นกัน (ทางทฤษฎี 10Gbps) แต่ใช้กับอินสแตนซ์การคำนวณคลัสเตอร์เท่านั้น)

อีกจุดที่กล่าวถึงคือระดับของการเปลี่ยนแปลง ในอินสแตนซ์ขนาดเล็กมีความแปรปรวนของประสิทธิภาพการทำงานมากขึ้นเนื่องจากมีการแชร์องค์ประกอบทางกายภาพระหว่างเครื่องเสมือนเพิ่มเติม ไม่ว่าคุณจะคาดหวังว่าจะมีการเปลี่ยนแปลงประมาณ +/- 20% ในประสิทธิภาพของคุณ (แหล่งที่มา: 1 , 2 , 3 ) ในกรณีของคุณ (ตามข้อสันนิษฐาน / การคำนวณที่ด้านบน) คุณอาจต้องการแบนด์วิดท์สูงสุดที่ 13MB / s (6.5MB คู่สองเท่าเนื่องจากดิสก์ I / O เป็นเครือข่ายที่ จำกัด ) หากคุณกำลังถ่ายโอนเนื้อหาแบนด์วิดท์ที่ต่ำกว่าคุณควรจะสามารถใช้อินสแตนซ์ที่มีประสิทธิภาพ 'ปานกลาง' I / O (ดูที่หน้าประเภทอินสแตนซ์) หากการคำนวณของคุณส่งผลให้มีความต้องการแบนด์วิดท์สูงกว่าคุณจะต้องใช้อินสแตนซ์ที่มีประสิทธิภาพ I / O 'สูง' เพียงแค่สตรีมข้อมูลไม่ควรเป็น CPU หรือหน่วยความจำ แต่การเชื่อมต่อ 100 ครั้งพร้อมกันอาจต้องใช้อินสแตนซ์ขนาดกลางอย่างน้อย - และถ้าแบนด์วิดท์เป็นเรื่องที่น่ากังวล

ฉันขอแนะนำให้ทำการเปรียบเทียบเซิร์ฟเวอร์ที่คุณเปิดเพื่อดูว่าตรงตามความต้องการของคุณ เปิดใช้งานอินสแตนซ์ที่สอง (ประเภทเดียวกัน) และดำเนินการiperfโดยใช้ที่อยู่ IP ส่วนตัวของอินสแตนซ์ - คุณจะต้องเปิดพอร์ต 5001 ในกลุ่มความปลอดภัยของคุณหากคุณเรียกใช้ด้วยการตั้งค่าเริ่มต้น) นอกจากนี้การทดสอบส่วนใหญ่นอกเครือข่าย EC2 จะแสดงผลลัพธ์ระหว่าง 80-130Mbps (อินสแตนซ์ขนาดใหญ่) - แม้ว่าตัวเลขดังกล่าวไม่จำเป็นต้องมีความหมาย

CDN จะเหมาะกับความต้องการของคุณมากขึ้นหากการตั้งค่าของคุณอนุญาต S3 ดูเหมือนจะมีขีด จำกัด ประมาณ 50MB / s สำหรับแบนด์วิดท์ (อย่างน้อยจากอินสแตนซ์เดียว) ตามบทความนี้แต่สูงกว่าที่คุณควรจะต้องใช้ (S3 ไม่รองรับการสตรีม) Cloudfront จะเหมาะกว่าสำหรับงานของคุณ (ตามที่ได้รับการออกแบบเป็น CDN) และรองรับ 1000Mbps = 125MB / s โดยค่าเริ่มต้น ( แหล่งที่มา ) พร้อมแบนด์วิดท์ที่สูงขึ้นตามคำขอและสามารถส่งกระแสข้อมูลเนื้อหาได้เช่นกัน)


คุณจะได้รับค่า Mbps ที่ "ตามทฤษฎี" อยู่ที่ไหน ฉันไม่พบแหล่งเอกสารอย่างเป็นทางการหรือไม่เป็นทางการของตัวเลขเหล่านี้
dtheodor

4
ตอนนี้ตัวเลขเหล่านั้นค่อนข้างแตกต่างกันไป (และฉันไม่สามารถติดตามแหล่งข้อมูลสำหรับพวกเขาได้ในขณะนี้) มีการเปลี่ยนแปลงมากมายใน 4 ปี เป็นที่ทราบกันว่า EC2 มีการเชื่อมต่อระหว่างกัน 10Gbps ภายในกลุ่มคลัสเตอร์ AWS เคยใช้ (ในปี 2550) เสนอราคา 250Mbps สำหรับแบนด์วิดท์เฉพาะที่ ปัจจุบันแบนด์วิธเครือข่ายมีการใช้งานร่วมกันระหว่างอินสแตนซ์โดยมีการจัดสรรลำดับความสำคัญตามประเภทของอินสแตนซ์ อย่างน้อยก็ในบางส่วนขนาดของอินสแตนซ์จะกำหนดจำนวนอินสแตนซ์อื่น ๆ ที่คุณแชร์ทรัพยากรด้วย หากไม่ได้ใช้เครือข่ายอินสแตนซ์ของคุณจะได้รับการแบ่งปันมากขึ้น
cyberx86

ขออภัยนี่ไม่ใช่หัวข้อ แต่ฉันไม่รู้วิธีอื่นในการติดต่อ @ cyberx86 แต่เพียงแจ้งให้คุณทราบว่าใบรับรอง SSL สำหรับเว็บไซต์ของคุณหมดอายุสักเล็กน้อยในหนึ่งสัปดาห์ที่ผ่านมา ขออภัยที่แสดงความคิดเห็นที่นี่ แต่ไม่พบที่อยู่อีเมลสำหรับคุณ
Kevin Lyda

1
@KevinLyda ขอบคุณ ในขณะที่ฉันรู้ว่าใบรับรองหมดอายุแล้วไซต์นั้นยังไม่ได้รับการอัปเดตเป็นระยะเวลาหนึ่งดังนั้นนี่จึงเป็นโอกาสที่ดีที่จะย้ายไปยังการต่ออายุอัตโนมัติด้วย LetsEncrypt
cyberx86

ใช่ใช้มันด้วยตัวเอง สคริปต์ง่ายมาก (โดยเฉพาะกับลูกค้าที่ไม่เป็นทางการ) และทำงานเป็นฉากหลัง
Kevin Lyda

0

ดูเหมือนว่าตัวเลขจะเปลี่ยนแปลงตลอดเวลาและเมื่อจำนวนของประเภทอินสแตนซ์ต่างกันเพิ่มขึ้น แต่ผู้คนจำนวนมากโพสต์มาตรฐาน ฉันมีโชคด้วยการ[instance category] ec2 network benchmarkไปเที่ยว

ตัวอย่างเช่นผมอยากจะรู้ว่าแบนด์วิดธ์ของนั้นเช่นดังนั้นฉันค้นหาm4.xlarge ec2 m4 network benchmarkฉันพบผลการทดสอบนี้จากบล็อกวิศวกรรมของ Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.