AWS, bande passante et livraison de contenu

31

Ma question concerne les machines virtuelles et la livraison de leur contenu via la connexion des serveurs à Internet.

J'ai une instance de fenêtres Ec2 et sa connexion réseau semble être de 100 Mbps

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

En quoi s3 diffère-t-il, je suppose qu'il n'y a pas de véritable goulot d'étranglement sortant potentiel avec s3?

Remarque: je sais que s3 et leur CDN seraient mieux pour le contenu statique, mais je dois explorer cette situation pour l'instant. Nos pages HTML doivent accéder à une page côté serveur via AJAX, et parce qu'il n'y a pas de travail à l'épreuve des bombes pour le moment, notre contenu et notre serveur doivent être exactement sur le même domaine, il est donc exclu d'utiliser 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 plus. Les vidéos peuvent mesurer jusqu'à 5 Mo chacune, mais elles en afficheraient jusqu'à 20.

Keeno
la source
"nous avons besoin de notre HTML pour accéder à un proxy via JS" ... Qu'est-ce que cela signifie?
Eric Hammond
Quelle bande passante pensez-vous avoir besoin d'utiliser en pointe?
Eric Hammond
@EricHammond J'ai mis à jour ma question avec plus d'informations
Keeno
Cela ne me semble pas comme si vous aviez une raison particulière d'être hyper concentré sur des goulots d'étranglement potentiels spécifiques à ce stade. Développez votre service à l'aide des meilleures pratiques courantes d'évolutivité, puis étudiez et résolvez les problèmes de performances à mesure qu'ils surviennent. Diffuser des vidéos via un CDN.
Eric Hammond
1
Keeno: Je connais la même politique d'origine dans JS, mais je ne vois toujours pas pourquoi cela vous empêcherait de diffuser le contenu vidéo avec un domaine différent (CDN). C'est une pratique courante.
Eric Hammond

Réponses:

60

Je ne peux pas parler pour les instances Windows, mais je suppose 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 - je suppose que c'est le dernier). Si nous prenons un débit de 512 kbps, vous avez besoin d'environ 51 Mbit / s ou 6,5 Mo / s.

Les instances EC2 diffèrent dans leurs performances d'E / S (ce qui inclut la bande passante). Il existe 3 niveaux de performances d'E / S: faible, modéré et élevé. Gardez à l'esprit, cependant, que les E / S de disque (c'est-à-dire des volumes EBS) dépendent également de la bande passante. Vous ne pouvez vraiment considérer la bande passante au sein du réseau EC2 (car elle sera complètement variable sur Internet).

Quelques chiffres typiques pour quantifier «faible», «moyen» et «élevé» (différentes sources citent des nombres différents pour les valeurs théoriques, de sorte qu'ils peuvent ne pas être complètement précis).

Élevé: théorique: 1 Gbit / s = 125 Mo / s; Réaliste ( source ): 750 Mbps = 95 Mo / s

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

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

(Il y a également un niveau «très élevé» (10 Gbit / s théorique) mais cela ne s'applique qu'aux instances de calcul de cluster uniquement).

Un autre point à mentionner est le degré de variation. Sur des instances plus petites, les performances sont plus variées car les composants physiques sont partagés entre plusieurs 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 devrez peut-être une bande passante maximale de 13 Mo / s (double 6,5 Mo, car les E / S disque sont également limitées au réseau). Si vous transférez un contenu à faible bande passante, vous devriez pouvoir utiliser une instance avec des performances d'E / S «modérées» (voir la page des types d'instance), si vos calculs entraînent une exigence de bande passante plus élevée, vous aurez besoin d'une instance avec des performances d'E / S «élevées». Le simple streaming des données ne doit pas être lié au processeur 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 recommanderais de comparer 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-les iperfsur chacune 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). De plus, la plupart des tests en dehors du réseau EC2 montrent 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 (au moins à partir d'une seule instance) selon cet article , mais c'est plus élevé que ce que vous devriez exiger (S3 ne prend pas en charge la diffusion en continu). Cloudfront serait mieux adapté à votre tâche (car il est conçu comme un CDN) et prend en charge 1000 Mbps = 125 Mo / s par défaut ( source ) avec une bande passante plus élevée disponible sur demande et peut également diffuser du contenu)

cyberx86
la source
Où obtenez-vous vos valeurs Mbps "théoriques"? Je ne trouve aucune source officielle ou officieuse de documentation pour ces chiffres.
dtheodor
4
Ces chiffres sont probablement très différents à l'heure actuelle (et je n'arrive pas à trouver de sources pour eux pour le moment). Beaucoup de choses ont changé en 4 ans. Il est connu qu'EC2 possède des interconnexions de 10 Gbit / s au sein des groupes de clusters. AWS avait l'habitude (en 2007) de citer un chiffre de bande passante locale dédiée de 250 Mbps. Actuellement, la bande passante réseau est partagée entre les instances, avec une priorité allouée en fonction du type d'instance (et éventuellement de facteurs tels que l'optimisation EBS). Au moins en partie, la taille de l'instance détermine le nombre d'autres instances avec lesquelles vous partagez des ressources. Si le réseau n'est pas utilisé, votre instance obtient une part plus importante.
cyberx86
Désolé, c'est hors sujet, mais je ne sais pas comment contacter @ cyberx86, mais je vous informe simplement que le certificat SSL pour votre site Web a expiré il y a un peu plus d'une semaine. Toutes mes excuses pour avoir commenté ici, mais je ne trouve pas d'adresse e-mail pour vous.
Kevin Lyda
1
@KevinLyda Merci. Bien que je sache que le certificat avait expiré, ce site n'a pas été mis à jour depuis un certain temps - c'était donc une bonne occasion de migrer vers des renouvellements automatiques avec LetsEncrypt.
cyberx86
Oui, je l'ai utilisé moi-même. Très facile à scénariser (en particulier avec les clients non officiels) et à travailler en arrière-plan.
Kevin Lyda
0

Les chiffres semblent changer au fil du temps et à mesure que le nombre de types d'instances différents prolifèrent. Mais un certain nombre de personnes affichent des repères. J'ai eu de la chance en googlant [instance category] ec2 network benchmark.

Par exemple, je voulais connaître la bande passante d'une m4.xlargeinstance, alors 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
...
Simon Woodside
la source