Marcio Cunha

Banco de dados lento? Como achar gargalos de disco no Linux

Aprenda a diagnosticar latência de armazenamento em bancos de dados usando ferramentas de kernel como iostat e blktrace para otimizar a performance do seu sistema.

Marcio Cunha•2 min
Também disponível em:EnglishEspañol
Resumo
  • O iostat é a ferramenta essencial para identificar rapidamente se a latência de disco está represando a execução das queries.
  • A análise detalhada com blktrace revela como o kernel enfileira e processa cada operação de escrita ou leitura no hardware.
  • Gargalos de I/O frequentemente escondem problemas de configuração de sistema de arquivos ou concorrência excessiva de threads.
  • A monitoração precisa exige correlacionar o tempo de resposta do disco com o volume de IOPS exigido pelo banco de dados.
  • Otimizar a performance de armazenamento também envolve gerenciar o calor gerado, conforme discutimos ao explicar por que o SSD NVMe esquenta e como controlar a temperatura .

Por que seu banco de dados trava em operações de disco?

Quando um banco de dados começa a apresentar lentidão, o primeiro instinto costuma ser olhar para o código SQL ou para o uso de CPU. Porém, muitas vezes, o culpado silencioso é o subsistema de armazenamento. O Linux gerencia o acesso ao disco através de várias camadas, e quando a fila de pedidos supera a capacidade do hardware, o banco de dados entra em espera. Na prática, isso significa que seus dados ficam presos esperando um espacinho no disco para serem gravados ou lidos, criando um efeito dominó de latência.

Monitorando a saúde do I/O com o iostat

O comando iostat é o ponto de partida clássico para qualquer diagnóstico de disco. Ele fornece estatísticas em tempo real sobre o uso de CPU e de entrada/saída (I/O) de dispositivos. Ao rodar iostat -xz 1, você obtém uma visão clara de métricas vitais como o %util (porcentagem de tempo que o dispositivo ficou ocupado) e o await (tempo médio de espera de uma requisição). Se o valor de await estiver alto, seu banco de dados está literalmente esperando o disco responder, o que é um sinal claro de gargalo.

Identificando gargalos profundos com o blktrace

Quando o iostat não é suficiente, precisamos abrir a caixa preta do kernel com o blktrace. Esta ferramenta rastreia cada operação de bloco que entra no subsistema de armazenamento. O blktrace coleta dados brutos que podem ser processados pelo blkparse, permitindo visualizar exatamente onde o tempo é perdido entre a solicitação da aplicação e a conclusão no hardware. É como usar uma câmera de alta velocidade para ver qual arquivo ou processo está saturando o barramento de dados.

Rastreamento prático: passo a passo

  1. Instale as ferramentas necessárias com sudo apt install sysstat blktrace.
  2. Monitore a atividade em tempo real com iostat -xz 1 para identificar o dispositivo saturado.
  3. Execute o rastreio do kernel durante um pico de carga com sudo blktrace -d /dev/nvme0n1 -o - | blkparse -i -.
  4. Analise o log gerado para encontrar latências atípicas em operações específicas.

Considerações sobre hardware e performance

Identificar o gargalo é apenas metade da batalha; a outra metade é entender o hardware. Assim como é vital monitorar a integridade física de componentes, como como achar curtos em placas de servidores com câmera térmica, a performance de armazenamento depende de um hardware bem refrigerado e configurado. Se o seu sistema sofre com gargalos recorrentes em unidades modernas, vale a pena conferir como depurar gargalos de I/O em NVMe no Linux para ajustes específicos dessa tecnologia.

Conclusão

Otimizar o I/O é um exercício constante de observabilidade. Ao combinar as métricas de alto nível do iostat com o rastreio profundo do blktrace, você deixa de adivinhar e passa a agir com precisão sobre o que realmente impacta seu banco de dados. Lembre-se que o gargalo muitas vezes não está na capacidade total, mas na latência de acesso aos blocos de dados mais frequentes.