Sintomas
Sua instância do Elastic Compute Service (ECS) pode estar com alta carga de E/S de disco se você observar um dos seguintes comportamentos:
Seu site ou aplicativo apresenta resposta lenta, tempo limite esgotado ou gera logs de erro relacionados a E/S.
As métricas de IOPS (Operações de Entrada/Saída por Segundo), throughput ou utilização do dispositivo (
%util) da instância estão excessivamente altas.
Causas
A alta carga de E/S de disco geralmente resulta de um dos seguintes fatores:
|
Causa |
Descrição |
|
Processo com alto consumo de E/S |
Um processo na instância, como leituras/gravações de banco de dados, escrita intensa de logs ou jobs de backup, gera muitas solicitações de leitura/gravação e exaure a capacidade de E/S do disco. |
|
Gargalo de desempenho do disco |
A demanda normal de E/S da sua aplicação atual excede o limite de desempenho (IOPS ou throughput) do disco anexado à instância. |
Fluxo de diagnóstico
Use o iostat para confirmar o gargalo do disco e, em seguida, use o iotop para identificar o processo específico. Por fim, otimize ou atualize os recursos conforme necessário.
High disk I/O suspected
|
+--> Run iostat to check disk metrics
|
+--> %util < 80%? --> Disk is not saturated. Check other resources (CPU, memory, network).
|
+--> %util >= 80%? --> Check r_await / w_await (I/O latency)
|
+--> Latency normal, high IOPS/throughput --> Disk is busy but healthy. Consider upgrading.
|
+--> Latency high --> Disk is saturated.
|
+--> Run iotop to identify the responsible process
|
+--> Known process (database, backup, logger) --> Optimize the application
|
+--> Unknown process --> Investigate (scheduled job? system update?)
Principais métricas de E/S de disco
Antes de iniciar a solução de problemas, compreenda as seguintes métricas essenciais que descrevem o desempenho de E/S do disco:
|
Métrica |
Descrição |
|
IOPS |
Número de operações de leitura ou gravação que o disco conclui por segundo. Cargas de trabalho com E/S aleatória intensa (como bancos de dados) geralmente são limitadas por IOPS. |
|
Throughput |
Quantidade de dados transferidos por segundo, medida em KB/s ou MB/s. Cargas de trabalho com E/S sequencial grande (como backups ou streaming de mídia) normalmente são limitadas por throughput. |
|
** |
Percentual de tempo que o disco gasta processando solicitações de E/S. Um valor consistentemente próximo de 100% indica que o disco está saturado. |
|
** |
Tempo médio (em milissegundos) para atender solicitações de E/S de leitura ou gravação, incluindo tempo de fila e tempo de serviço. Valores altos indicam que o disco não consegue acompanhar a demanda. |
|
** |
Número médio de solicitações de E/S aguardando na fila. Uma fila crescente indica saturação. |
Essas métricas estão relacionadas: um disco pode estar ocupado (%util próximo de 100%) e ainda apresentar bom desempenho se r_await / w_await permanecerem baixos. Inversamente, um disco pode mostrar %util moderado, mas alta latência se as operações individuais de E/S forem lentas. Sempre verifique tanto a utilização quanto a latência para obter uma visão completa.
Soluções
Etapa 1: Confirme o gargalo de E/S do disco
1,1 Fazer login na instância ECS
Acesse o Console do ECS - Instâncias. Na barra de navegação superior, selecione a região e o grupo de recursos desejados.
Acesse a página de detalhes da instância alvo. Clique em Connect e selecione Workbench. Siga as instruções na tela para fazer login no terminal.
1,2 Instale o pacote sysstat
O pacote sysstat inclui o iostat. Execute o comando de instalação correspondente ao seu sistema operacional:
Alibaba Cloud Linux / CentOS / Fedora
sudo yum install -y sysstat
Ubuntu / Debian
sudo apt install -y sysstat
openSUSE
sudo zypper install -y sysstat
1,3 Execute o iostat para monitorar a E/S do disco
Execute o seguinte comando para exibir estatísticas estendidas do disco em kilobytes, atualizando a cada 2 segundos:
iostat -d -x -k 2
|
Opção |
Descrição |
|
|
Exibe apenas o relatório de utilização do dispositivo (sem estatísticas de CPU). |
|
|
Mostra estatísticas estendidas, incluindo |
|
|
Apresenta as estatísticas em kilobytes por segundo. |
|
|
Atualiza a saída a cada 2 segundos. |
Ignore o primeiro bloco de saída do iostat, pois ele mostra médias desde a inicialização. O segundo bloco e os subsequentes apresentam estatísticas em tempo real.
1,4 Analisar a saída do iostat
A tabela a seguir explica as principais colunas:
|
Coluna |
Descrição |
O que observar |
|
|
Solicitações de leitura por segundo (IOPS) |
Valores anormalmente altos em comparação com sua linha de base |
|
|
Solicitações de gravação por segundo (IOPS) |
Valores anormalmente altos em comparação com sua linha de base |
|
|
Kilobytes lidos por segundo (throughput) |
Verifique em relação ao limite de throughput do seu disco |
|
|
Kilobytes gravados por segundo (throughput) |
Verifique em relação ao limite de throughput do seu disco |
|
|
Tempo médio de espera de E/S de leitura em milissegundos |
Compare com sua linha de base; um aumento significativo indica gargalo |
|
|
Tempo médio de espera de E/S de gravação em milissegundos |
Compare com sua linha de base; um aumento significativo indica gargalo |
|
|
Comprimento médio da fila de E/S |
Valores crescentes indicam que o disco não consegue acompanhar a demanda |
|
|
Percentual de tempo em que o disco está ocupado |
Consistentemente próximo de 100% significa que o disco está saturado |
Exemplo: Disco saudável versus disco saturado
Um disco saudável normalmente apresenta baixo %util e baixa latência:
Device r/s w/s rkB/s wkB/s r_await w_await aqu-sz %util
vda 0.02 0.63 0.55 7.20 2.05 1.99 0.00 0.07
Um disco saturado mostra %util próximo de 100%, com latência e profundidade de fila elevadas:
Device r/s w/s rkB/s wkB/s r_await w_await aqu-sz %util
vda 85.00 210.00 1360.00 6720.00 38.50 52.10 13.30 99.80
Etapa 2: Localizar o processo com alto consumo de E/S
Após confirmar que a E/S do disco está saturada, identifique o processo causador da alta carga.
2,1 Instale o iotop
Execute o comando de instalação correspondente ao seu sistema operacional:
Alibaba Cloud Linux / CentOS / Fedora
sudo yum install -y iotop
Ubuntu / Debian
sudo apt install -y iotop
openSUSE
sudo zypper install -y iotop
2,2 Exibir processos ativos de E/S
Execute o comando a seguir. A opção -o mostra apenas os processos que estão realizando E/S ativamente:
sudo iotop -o
2,3 Analisar a saída do iotop
Identificar o processo: Encontre o processo com maior E/S na coluna
DISK WRITEouDISK READ.Verificar a espera de E/S: A coluna
IO>mostra o percentual de tempo que o processo passa aguardando E/S. Uma porcentagem alta indica que o processo depende intensamente de E/S.
Exemplo de saída:
Total DISK READ: 1.35 M/s | Total DISK WRITE: 6.58 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
3218 be/4 mysql 1.30 M/s 5.92 M/s 0.00 % 85.71 % mysqld --user=mysql
1045 be/4 root 0.05 M/s 0.66 M/s 0.00 % 12.50 % rsync --daemon
Neste exemplo, o processo mysqld é responsável pela maior parte da E/S do disco.
Etapa 3: Analisar e tratar o processo anômalo
Depois de identificar o processo com alta E/S, determine a causa raiz e aplique a correção apropriada.
Causas comuns e resoluções:
|
Causa |
Resolução |
|
Banco de dados (consultas lentas) |
Verifique o log de consultas lentas. Otimize instruções SQL e índices. |
|
Logs excessivos |
Reduza o nível de log do aplicativo (por exemplo, de DEBUG para INFO) e configure a rotação de logs. |
|
E/S de arquivo (leituras/gravações frequentes) |
Revise a lógica de leitura/gravação de arquivos. Use cache de memória e aumente o tamanho do buffer. |
|
Jobs de backup |
Reagende os jobs de backup para horários de menor movimento. Limite a E/S usando |
|
Atualizações ou varreduras do sistema |
Verifique se atualizações automáticas de pacotes ou varreduras de antivírus estão em execução. Agende essas tarefas durante janelas de manutenção. |
Etapa 4: Avaliar e atualize o desempenho do disco (Opcional)
Se a otimização no nível do aplicativo não reduzir suficientemente a carga de E/S, considere atualizar o disco.
Avalie seus requisitos: Determine a meta de desempenho com base nos valores reais de IOPS e throughput relatados pelo
iostat. Compare esses valores com os limites de desempenho do tipo de disco atual.Realize a atualização: Com base na sua meta de desempenho, atualize o disco para uma especificação superior.
Recomendações
**Configure monitoramento e alertas**: Para métricas essenciais de disco, como
%util, IOPS e throughput, defina limiares de alerta razoáveis (por exemplo, 80%) para detectar problemas precocemente, antes que afetem seus aplicativos.Otimize a E/S do aplicativo: Na camada de aplicação, implemente cache sempre que possível para reduzir leituras e gravações diretas no disco. Para cenários com uso intenso de gravação, considere usar gravações assíncronas ou em lote para suavizar picos de E/S.
Estabeleça uma linha de base de desempenho: Execute
iostat -d -x -k 5durante operações normais e registre os valores típicos para%util,r_await/w_awaite IOPS. Durante a solução de problemas, compare as métricas atuais com essa linha de base para identificar anomalias rapidamente.Separe cargas de trabalho entre discos: Se sua instância lida com múltiplas cargas de trabalho intensivas em E/S (por exemplo, arquivos de banco de dados e logs de aplicativos), considere colocá-las em discos separados para distribuir a carga de E/S.