Em que momento o uso do EBS é o gargalo?

10

Eu tenho um site hospedado na Amazon usando uma instância do EC2 apoiada por um volume EBS. Nos fins de semana, os picos de tráfego e eu aumentamos a instância, o que ajuda bastante - não estou mais vendo o uso da CPU chegando a 100% e o servidor ficando sem resposta.

No entanto, percebo que as leituras de disco também são muito altas (não posso ajudar, acho) e estou pensando em que ponto verei algum tipo de falha porque o disco não pode manter acima?

Como você pode ver na imagem em anexo, ela atingiu o limite de 80 MB / minuto no fim de semana. Alguém tem experiência com a AWS e sabe em que momento terei que mudar para instâncias balanceadas de carga múltipla porque o EBS se torna o gargalo?

Gráfico de uso do EBS

ESW
fonte
2
Acho que precisamos de alguns detalhes da camada de aplicação aqui. O que é a atividade de leitura de disco? Acesso aleatório para imagens / ativos? Leituras sequenciais grandes (por exemplo, backups ou análises de banco de dados)? Observe que você pode executar vários volumes EBS anexados a uma única instância executando o software RAID-0 para melhorar as coisas.
precisa saber é o seguinte
a maioria dessas leituras são arquivos menores (menos de 1 MB, muitos menos de 500k), mas não arquivos "minúsculos". Não tenho idéia se isso é uma carga para um volume EBS ou se essa quantidade de tráfego é equivalente - e não tenho idéia de como descobrir isso.
ESW
Eu estava escrevendo uma resposta com RAID e EBS quando li seu comentário, malayter. Eu acrescentaria que o RAID10 pode ser uma solução mais flexível, pois deve melhorar as leituras e gravações.
tsykoduk
@tsykoduk Em geral, todos os tipos de armazenamento da AWS têm um desempenho não óbvio e, embora possa parecer que o RAID10 poderia melhorar o desempenho, é realmente melhor tentar fazer comparações com os tipos de padrões de acesso e a carga que seu aplicativo real provavelmente experimentará . Mesmo assim, é provável que seu desempenho varie bastante às vezes no ambiente da AWS, em comparação com uma solução auto-hospedada, na qual você tem mais controle - e, portanto, mais previsibilidade - sobre o desempenho do armazenamento. Em geral, ter mais de um volume em uma configuração RAID provavelmente terá um impacto positivo.
Aculich 16/02/12

Respostas:

5

A primeira coisa a ter em mente que terá mais impacto no desempenho de E / S é o tipo de instância que você está usando.

Instance Type   I/O Performance
-------------   ---------------
t1.micro        Low
m1.small        Moderate
m2.xlarge       Moderate
c1.medium       Moderate
m1.large        High
m1.xlarge       High
m2.2xlarge      High
m2.4xlarge      High
c1.xlarge       High
cc1.4xlarge     Very High (10 Gigabit Ethernet)
cc2.8xlarge     Very High (10 Gigabit Ethernet)
cg1.4xlarge     Very High (10 Gigabit Ethernet)

Quanto aos volumes do EBS e ao desempenho que você obterá, como sugere as Perguntas frequentes da AWS , será necessário comparar seu aplicativo para ver o que esperar:

P: Que tipo de latência e taxas de taxa de transferência posso esperar dos volumes do Amazon EBS? A latência de uma instância do Amazon EC2 para um volume do Amazon EBS é semelhante à latência que você veria na unidade de armazenamento da instância do Amazon EC2 local. As taxas de E / S podem variar significativamente com base no tamanho das solicitações, na aleatoriedade dos padrões de acesso e na estratégia de armazenamento em cache usada pelo aplicativo. Dessa forma, a medida mais precisa é comparar seu aplicativo específico em um volume do Amazon EBS.

O que isso significa é que as taxas do EBS que você obtém não são necessariamente piores ou melhores que o armazenamento da instância local; isso realmente depende do seu comportamento de acesso a dados.

Mais informações estão na página do AWS EBS :

Desempenho de volume do Amazon EBS

Os volumes do Amazon EBS foram projetados para oferecer maior taxa de transferência do que os repositórios de instância do Amazon EC2 para aplicativos que executam muitos acessos aleatórios em seu conjunto de dados. Você também pode anexar vários volumes a uma instância e distribuir os volumes para obter mais aumentos na taxa de transferência.

O desempenho exato dependerá do aplicativo (por exemplo, E / S aleatória x seqüencial ou tamanhos de solicitação grandes x pequenos), portanto, a melhor medida é comparar seus aplicativos reais com o volume. Como os volumes do Amazon EBS exigem acesso à rede, você verá um desempenho de taxa de transferência mais rápido e consistente com instâncias maiores.

Lembre-se também de que o desempenho de E / S não apenas inclui a E / S de disco, mas também o tráfego de rede ... portanto, quanto mais tráfego de rede sua instância obtiver, menor será a E / S de disco.

Dependendo do que você está servindo, o armazenamento em cache de objetos na memória pode ajudar consideravelmente se isso for possível para o seu tipo de aplicativo.

Além disso, aqui estão algumas postagens de blog que avaliam o desempenho do EBS e volumes locais (efêmeros) em várias configurações e ajustes de RAID para obter um bom desempenho de E / S:

Discos efêmeros EC2 versus volumes EBS em RAID

Desempenho de E / S do Amazon EC2: discos efêmeros locais vs. volumes EBS distribuídos por RAID 0

Obtendo um bom IO do EBS da Amazon

aculich
fonte
2
Este site parece ter boas informações também: ec2instances.info
Gianfranco P.