Entrega da AWS, largura de banda e conteúdo

31

Minha pergunta é sobre máquinas virtuais e entrega de seu conteúdo pela conexão de servidores à Internet.

Eu tenho uma instância do Windows Ec2 e sua conexão de rede parece ser 100mbps

Se eu estivesse entregando conteúdo dessa instância do EC2, esse é meu gargalo em potencial?

Como o s3 difere, suponho que não há nenhum gargalo de saída real com o s3?

Nota: Eu sei que o s3 e seu CDN seriam melhores para conteúdo estático, no entanto, preciso explorar essa situação por enquanto. Nossas páginas HTML precisam acessar uma página do lado do servidor via AJAX e, como não há nenhum trabalho à prova de explosões no momento, nosso conteúdo e nosso servidor precisam estar exatamente no mesmo domínio, portanto, isso impede o uso do S3.

Largura de banda necessária: não tenho certeza, poderíamos ter até 100 usuários baixando vídeos a qualquer momento, provavelmente não mais. Os vídeos podem ter até 5 MB cada, mas podem exibir até 20.

Keeno
fonte
"precisamos que nosso HTML acesse um proxy via JS" ... O que isso significa?
Eric Hammond
Quanta largura de banda você espera usar no pico?
Eric Hammond
@EricHammond Eu atualizei a minha pergunta com mais algumas informações
Keeno
Não me parece que você tenha algum motivo específico para estar hiper focado em possíveis gargalos potenciais neste momento. Crie seu serviço usando práticas recomendadas comuns para escalabilidade e, em seguida, investigue e resolva problemas de desempenho à medida que eles surgirem. Sirva vídeos através de uma CDN.
Eric Hammond
11
Keeno: Eu estou familiarizado com a mesma política de origem em JS, mas ainda não entendo por que isso impediria a veiculação do conteúdo de vídeo com um domínio diferente (CDN). Essa é uma prática comum.
Eric Hammond

Respostas:

60

Não posso falar em instâncias do Windows, mas presumo que suas características básicas sejam bastante semelhantes às instâncias do Linux.

Sua estimativa para o uso da largura de banda é de 100 downloads simultâneos de vídeo (não sei se você quer fazer o download do arquivo ou fazer o streaming do vídeo - assumirei o último). Se tomarmos uma taxa de fluxo de 512kbps, você precisará de 51Mbit / s ou 6,5MB / s.

As instâncias do EC2 diferem no desempenho de E / S (que inclui largura de banda). Existem 3 níveis de desempenho de E / S: baixo, moderado e alto. Porém, lembre-se de que a E / S do disco (ou seja, dos volumes EBS) também depende da largura de banda. Você só pode realmente considerar a largura de banda na rede EC2 (pois ela será completamente variável na Internet).

Alguns números típicos para quantificar 'baixo', 'médio' e 'alto' (fontes diferentes citam números diferentes para valores teóricos, portanto, podem não ser completamente precisos).

Alto: Teórico: 1 Gbps = 125 MB / s; Realista ( origem ): 750 Mbps = 95 MB / s

Moderado: Teórico: 250Mbps; Realista ( fonte, p57 ): 80 Mbps = 10 MB / s

Baixo: Teórico: 100Mbps; Realista (dos meus próprios testes): 10-15Mbps = 1-2MB / s

(Na verdade, também existe um nível 'muito alto' (teórico de 10 Gbps), que se aplica apenas a instâncias de computação em cluster).

Um outro ponto de menção é o grau de variação. Em instâncias menores, há mais variabilidade no desempenho, à medida que os componentes físicos são compartilhados entre mais máquinas virtuais. Independentemente disso, você pode esperar uma variação de +/- 20% no seu desempenho (fontes: 1 , 2 , 3 ). No seu caso (conforme as suposições / cálculos na parte superior), você pode precisar de uma largura de banda máxima de 13 MB / s (dobro de 6,5 MBps, pois a E / S de disco também é limitada em rede). Se você estiver transferindo conteúdo de largura de banda menor, poderá usar uma instância com desempenho de E / S 'moderado' (consulte a página de tipos de instância), se seus cálculos resultarem em um requisito de largura de banda mais alto, você precisará de uma instância com desempenho de E / S 'alto'. Simplesmente o streaming dos dados não deve estar vinculado à CPU ou à memória, mas sustentar 100 conexões simultâneas provavelmente exigirá pelo menos uma instância de tamanho médio - e se a largura de banda for uma preocupação, com base no exposto, uma instância grande seria uma aposta mais segura).

Eu recomendaria comparar os servidores que você inicia para ver se eles atendem às suas necessidades (calculadas). Inicie duas instâncias (do mesmo tipo) e execute iperfem cada uma delas usando os endereços IP privados das instâncias - você precisará abrir a porta 5001 no seu grupo de segurança, se a executar com as configurações padrão. Além disso, a maioria dos testes fora da rede EC2 mostra resultados entre 80-130 Mbps (grandes instâncias) - embora esses números não sejam necessariamente significativos.

Uma CDN seria mais adequada às suas necessidades, se sua configuração permitir. O S3 parece ter um limite em torno de 50 MB / s para largura de banda (pelo menos em uma única instância), conforme este artigo , mas é mais alto do que o necessário (o S3 não suporta streaming). O Cloudfront seria mais adequado para sua tarefa (como é projetado como uma CDN) e suporta 1000 Mbps = 125 MB / s por padrão ( origem ), com maior largura de banda disponível mediante solicitação e também pode transmitir conteúdo)

cyberx86
fonte
Onde você obtém seus valores Mbps "teóricos"? Não consigo encontrar nenhuma fonte oficial ou não oficial de documentação para esses números.
dtheodor
4
Esses números provavelmente são bem diferentes agora (e não consigo rastrear fontes para eles no momento). Muita coisa mudou em 4 anos. É sabido que o EC2 possui interconexões de 10 Gbps nos grupos de clusters. A AWS costumava (em 2007) citar uma figura de largura de banda local dedicada de 250 Mbps. Atualmente, a largura de banda da rede é compartilhada entre instâncias, com prioridade alocada com base no tipo de instância (e possivelmente fatores como a otimização do EBS). Pelo menos em parte, o tamanho da instância determina com quantas outras instâncias você compartilha recursos. Se a rede não for usada, sua instância receberá um compartilhamento maior.
cyberx86
Desculpe, este tópico não está disponível, mas não sei mais como entrar em contato com @ cyberx86, mas apenas informando que o certificado SSL do seu site expirou um pouco mais de uma semana atrás. Pedimos desculpas por comentar aqui, mas não conseguimos encontrar um endereço de e-mail para você.
precisa saber é o seguinte
11
@KevinLyda Thanks. Embora eu soubesse que o certificado expirou, esse site não foi atualizado há algum tempo - portanto, essa foi uma boa oportunidade para migrar para renovações automáticas com o LetsEncrypt.
cyberx86
Sim, tenho usado eu mesmo. Muito fácil de criar scripts (principalmente com clientes não oficiais) e trabalhar em segundo plano.
21416 Kevin Murrda
0

Os números parecem mudar com o tempo e à medida que o número de diferentes tipos de instância prolifera. Mas várias pessoas postam referências. Tive alguma sorte pesquisando no Google [instance category] ec2 network benchmark.

Por exemplo, eu queria saber a largura de banda de uma m4.xlargeinstância, então procurei ec2 m4 network benchmark. Encontrei este resultado de teste no blog de engenharia do 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
fonte