32 votes

AWS, bande passante et diffusion de contenu

Ma question porte sur les machines virtuelles et la diffusion de leur contenu via la connexion des serveurs à Internet.

J'ai une instance Ec2 Windows, et sa connexion réseau semble être de 100 mbps.

Si je devais diffuser du contenu à partir de cette instance EC2, serait-ce là mon goulot d'étranglement potentiel ?

Comment le s3 diffère-t-il ? Je suppose qu'il n'y a pas de réel goulot d'étranglement potentiel avec le s3 ?

Note : Je sais que s3 et son CDN serait mieux pour le contenu statique, mais j'ai besoin d'explorer cette situation pour le moment. Nos pages HTML doivent accéder à une page côté serveur via AJAX, et parce qu'il n'y a pas de solution miracle pour cela pour le moment, notre contenu et notre serveur doivent être exactement sur le même domaine, ce qui exclut l'utilisation de S3.

Bande passante nécessaire : je ne suis pas sûr, nous pourrions avoir jusqu'à 100 utilisateurs téléchargeant des vidéos à tout moment, probablement pas plus. Les vidéos peuvent faire jusqu'à 5 mégaoctets chacune, mais ils peuvent en visionner jusqu'à 20.

62voto

cyberx86 Points 20450

Je ne peux pas parler des instances Windows, mais je présume que leurs caractéristiques de base sont assez similaires à celles des instances Linux.

Votre estimation de l'utilisation de la bande passante est de 100 téléchargements vidéo simultanés (je ne sais pas si vous voulez dire télécharger le fichier ou diffuser la vidéo en continu - je suppose que c'est le dernier cas). Si nous prenons un taux de streaming de 512kbps, vous avez besoin d'environ 51Mbit/s ou 6.5MB/s.

Les instances EC2 diffèrent par leurs performances d'E/S (qui incluent la bande passante). Il existe trois niveaux de performances d'E/S : faible, modéré et élevé. N'oubliez pas, cependant, que les E/S sur disque (c'est-à-dire à partir des volumes EBS) dépendent également de la bande passante. Vous ne pouvez réellement prendre en compte la bande passante qu'au sein du réseau EC2 (car elle sera totalement variable sur Internet).

Quelques chiffres typiques pour quantifier "faible", "moyen" et "élevé" (différentes sources citent des chiffres différents pour les valeurs théoriques, de sorte qu'ils peuvent ne pas être tout à fait exacts).

Haut : Théorique : 1Gbps = 125MB/s ; Réaliste ( source ) : 750Mbps = 95MB/s

Modéré : Théorique : 250Mbps ; Réaliste ( source, p57 ) : 80Mbps = 10MB/s

Faible : Théorique : 100Mbps ; Réaliste (d'après mes propres tests) : 10-15Mbps = 1-2MB/s

(Il existe en fait un niveau "très élevé" également (10 Gbps théoriques), mais il ne s'applique qu'aux instances de calcul en grappe).

Un autre point à mentionner est le degré de variation. Sur les petites instances, les performances varient davantage, car les composants physiques sont partagés entre un plus grand nombre de machines virtuelles. Quoi qu'il en soit, vous pouvez vous attendre à une variation d'environ +/-20% de vos performances (sources : 1 , 2 , 3 ). Dans votre cas (selon les hypothèses/calculs en haut), vous pourriez avoir besoin d'une bande passante de pointe de 13 Mo/s (double de 6,5 Mo/s, puisque les E/S de disque sont également limitées par le réseau). Si vous transférez du contenu à faible bande passante, vous devriez pouvoir utiliser une instance avec des performances d'E/S "modérées" (voir l'onglet page des types d'instance ), si vos calculs nécessitent une bande passante plus importante, vous aurez besoin d'une instance avec des performances d'E/S "élevées". Le simple streaming des données ne devrait pas être contraignant pour le CPU ou la mémoire, mais le maintien de 100 connexions simultanées nécessitera probablement au moins une instance de taille moyenne - et si la bande passante est un problème, sur la base de ce qui précède, une grande instance serait un pari plus sûr).

Je vous recommande d'évaluer les serveurs que vous lancez pour voir s'ils répondent à vos besoins (calculés). Lancez deux instances (du même type) et exécutez iperf sur chacune d'elles en utilisant les adresses IP privées des instances - vous devrez ouvrir le port 5001 dans votre groupe de sécurité si vous l'exécutez avec les paramètres par défaut). En outre, la plupart des tests effectués en dehors du réseau EC2 donnent des résultats compris entre 80 et 130 Mbps (grandes instances) - bien que ces chiffres ne soient pas nécessairement significatifs.

Un CDN serait mieux adapté à vos besoins, si votre configuration le permet. S3 semble avoir une limite d'environ 50 Mo/s pour la bande passante (du moins à partir d'une seule instance), comme le montre le tableau ci-dessous. cet article mais c'est plus que ce dont vous avez besoin (S3 ne prend pas en charge le streaming). Cloudfront serait mieux adapté à votre tâche (car il est conçu comme un CDN) et prend en charge 1000Mbps=125MB/s par défaut ( source ) avec une bande passante plus élevée disponible sur demande et pouvant également diffuser du contenu en continu)

0voto

rzr Points 385

Les chiffres semblent évoluer au fil du temps et de la prolifération des différents types d'instances. Mais un certain nombre de personnes publient des benchmarks. J'ai eu un peu de chance en cherchant sur google [instance category] ec2 network benchmark .

Par exemple, je voulais connaître la largeur de bande d'une m4.xlarge instance, donc j'ai cherché ec2 m4 network benchmark . J'ai trouvé ce résultat de test sur le blog d'ingénierie du Washington Post :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X