Todos os produtos
Search
Central de documentação

:Resolve high disk I/O load on Linux instance

Última atualização: Jul 03, 2026

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.

**%util**

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.

**r_await / w_await**

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.

**aqu-sz**

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

  1. Acesse o Console do ECS - Instâncias. Na barra de navegação superior, selecione a região e o grupo de recursos desejados.

  2. 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

-d

Exibe apenas o relatório de utilização do dispositivo (sem estatísticas de CPU).

-x

Mostra estatísticas estendidas, incluindo %util, r_await / w_await e profundidade da fila.

-k

Apresenta as estatísticas em kilobytes por segundo.

2

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

r/s

Solicitações de leitura por segundo (IOPS)

Valores anormalmente altos em comparação com sua linha de base

w/s

Solicitações de gravação por segundo (IOPS)

Valores anormalmente altos em comparação com sua linha de base

rkB/s

Kilobytes lidos por segundo (throughput)

Verifique em relação ao limite de throughput do seu disco

wkB/s

Kilobytes gravados por segundo (throughput)

Verifique em relação ao limite de throughput do seu disco

r_await

Tempo médio de espera de E/S de leitura em milissegundos

Compare com sua linha de base; um aumento significativo indica gargalo

w_await

Tempo médio de espera de E/S de gravação em milissegundos

Compare com sua linha de base; um aumento significativo indica gargalo

aqu-sz

Comprimento médio da fila de E/S

Valores crescentes indicam que o disco não consegue acompanhar a demanda

%util

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 WRITE ou DISK 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 ionice para reduzir o impacto em outros processos.

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.

  1. 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.

  2. 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 5 durante operações normais e registre os valores típicos para %util, r_await / w_await e 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.