Como posso identificar se meu volume do Amazon EBS está com microexpansão e evitar que isso aconteça?

6 minuto de leitura
0

Eu tenho um volume do Amazon Elastic Block Store (Amazon EBS) que não está violando seu limite de throughput ou IOPS no Amazon CloudWatch. Contudo, o volume parece sofrer controle de utilização e apresenta alta latência e comprimento de fila.

Breve descrição

O CloudWatch monitora o IOPS (op/s) e o throughput (bytes) de todos os tipos de volume do Amazon EBS coletando amostras a cada minuto.

A microexpansão ocorre quando um volume do EBS expande o IOPS ou o throughput por períodos significativamente mais curtos do que o período de coleta. Como o volume expande IOPS ou throughput altos por um período mais curto do que o período de coleta, o CloudWatch não reflete a expansão.

Exemplo: um volume IO1 (período de coleta de um minuto) com 950 IOPS provisionados tem um aplicativo que envia 1.000 IOPS por cinco segundos. O Amazon EBS aplica controle de utilização ao aplicativo quando ele atinge o limite de IOPS do volume. Nesse momento, o volume não consegue processar a workload, o que aumenta o tamanho da fila e a latência.

O CloudWatch não mostra que o volume ultrapassou o limite de IOPS porque o período de coleta é de 60 segundos. 1.000 IOPS ocorreram por apenas 5 segundos. Durante os 55 segundos restantes do período de coleta de um minuto, o volume permanece inativo. Isso significa que o número de VolumeReadOps+VolumeWriteOps durante todo o minuto é de 5.000 operações (1000*5 segundos). Isso equivale a uma média de 83,33 IOPS em um minuto (5000/60 segundos). Essa média geralmente não é uma preocupação.
Nesse caso, o VolumeIdleTime no mesmo tempo de amostra é de 55 segundos porque o volume fica inativo pelo restante do período de coleta. Isso significa que as 5.000 operações (VolumeReadops+VolumeWriteOps) nesse tempo de amostra ocorrem em apenas cinco segundos. Se você dividir 5.000 por 5 para calcular a média de IOPS, o resultado será 1.000 IOPS. 1.000 IOPS é o limite de volume.

Para determinar se a microexpansão está ocorrendo em seu volume, faça o seguinte:

  1. Use as métricas do CloudWatch para identificar possíveis microexpansões.
  2. Use o CloudWatch para obter o evento de microexpansão.
  3. Confirme a microexpansão usando uma ferramenta de nível de sistema operacional.
  4. Evite a microexpansão alterando o tamanho ou o tipo do volume para acomodar seus aplicativos.

Resolução

Use as métricas do CloudWatch para identificar possíveis microexpansões

  1. Verifique a métrica VolumeIdleTime. Essa métrica indica o número total de segundos em um período de tempo especificado quando nenhuma operação de leitura ou gravação é enviada. Se VolumeIdleTime for alto, o volume permaneceu inativo durante a maior parte do período de coleta. IOPS ou throughput suficientemente altos no mesmo tempo de amostra indicam uma potencial ocorrência de microexpansão.
    Com a métrica VolumeIdleTime para throughput, há métricas VolumeReadBytes e VolumeWriteBytes.
  2. Use a fórmula a seguir para calcular o throughput médio atingido quando o volume está ativo:
    Throughput médio estimado em bytes/s = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / (Period - Sum(VolumeIdleTime) )
    Com a métrica VolumeIdleTime para IOPS, há as métricas VolumeReadOps e VolumeWriteOps.
  3. Use a fórmula a seguir para calcular o IOPS médio atingido quando o volume está ativo:
    IOPS médio estimado em Ops/s = (Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) / ( Period - Sum(VolumeIdleTime) )

Use o CloudWatch para obter o evento de microexpansão

  1. Abra o console do CloudWatch.
  2. Escolha Todas as métricas.
  3. Use o ID do volume para pesquisar o volume afetado.
  4. Para exibir as métricas de throughput, escolha Procurar e adicione VolumeReadBytes, VolumeWriteBytes e VolumeIdleTime.
  5. Escolha Métricas representadas graficamente.
  6. Em Estatísticas, escolha Soma e, em Período, escolha 1 minuto.
  7. Em Adicionar matemática, escolha Iniciar com uma expressão vazia.
  8. Em Detalhes da Expressão, insira os IDs do gráfico da fórmula do Throughput médio estimado em bytes/s. Por exemplo, (m1+m2)/(60-m3).

Se a fórmula calcular um valor maior que o throughput máximo do volume, houve uma microexpansão. Para verificar as métricas de IOPS, siga as etapas anteriores e adicione VolumeReadOps, VolumeWriteOps e VolumeIdleTime na etapa 4.

Confirme a microexpansão usando uma ferramenta de nível de sistema operacional

As fórmulas acima nem sempre identificam microexpansões em tempo real. Isso ocorre porque o volume pode estar sofrendo microexpansão mesmo se o VolumeIdleTime for baixo.

Exemplo: seu volume atinge um nível que ultrapassa os limites do volume. O volume então é reduzido para um nível muito baixo de atividade sem ficar completamente inativo pelo restante do período de coleta. A métrica VolumeIdleTime não reflete a baixa atividade, mesmo que tenha ocorrido uma microexpansão.

Para confirmar a microexpansão, use uma ferramenta de nível de sistema operacional que tenha uma granularidade mais fina do que o CloudWatch.

Linux

Use o comando iostat. Para obter mais informações, consulte iostat(1) na página de manual do Linux.

1.    Para relatar estatísticas de E/S de todos os seus volumes montados com granularidade de um segundo, execute o seguinte comando:

iostat -xdmzt 1

Observação: a ferramenta iostat faz parte do pacote sysstat. Se você não conseguir encontrar o comando iostat, execute o seguinte comando para instalar o sysstat nas AMIs do Amazon Linux:

$ sudo yum install sysstat -y

2.    Para determinar se você está atingindo o limite de throughput, revise os rMB/s e wMB/s na saída. Se rMB/s + wMB/s for maior que o throughput máximo do volume, uma microexpansão está ocorrendo.

Para determinar se você está atingindo o limite de IOPS, revise os r/s e w/s na saída. Se r/s + w/s for maior que o IOPS máximo do volume, uma microexpansão está ocorrendo.

Windows

Execute o comando perfmon no Monitor de desempenho do Windows. Para obter mais informações, consulte Determine your IOPS and throughput requirements.

Evite microexpansões alterando o tamanho ou o tipo do volume para acomodar seus aplicativos

Altere o volume para um tipo e tamanho que acomodem o IOPS e throughput necessários. Para obter mais informações sobre os tipos de volume e seus respectivos limites de IOPS e throughput, consulte Tipos de volume do Amazon EBS. Há limites de IOPS/throughput que a instância pode enviar para todos os volumes do EBS conectados.

É uma prática recomendada comparar seus volumes com seu workload para verificar quais tipos de volume podem acomodar seu workload com segurança em um ambiente de teste. Para mais informações, consulte Comparar volumes do EBS.

AWS OFICIAL
AWS OFICIALAtualizada há um ano