Servidor Linux lento? Descubra em minutos se o gargalo é CPU, memória, disco ou rede com top, htop, vmstat, iostat, iotop, ss, dmesg e PSI.

Para que serve

Quando você tem um servidor Linux lento, a pergunta é sempre a mesma: qual recurso está no limite, CPU, memória, disco ou rede? Este artigo traz uma sequência curta de comandos que responde isso em poucos minutos, sem instalar ferramentas complexas, e mostra como ler cada resultado.

Pré-requisitos

  • Acesso root ou sudo.
  • Algumas ferramentas extras, que vale instalar com antecedência (com o servidor sobrecarregado, até instalar pacotes fica difícil):
    apt install htop iotop-c sysstat lsof smartmontools mtr-tiny

Roteiro de diagnóstico para servidor Linux lento

1. Visão geral: carga e tempo ligado

uptime

Mostra há quanto tempo o servidor está ligado e o load average de 1, 5 e 15 minutos. A carga é o número médio de processos rodando ou esperando (por CPU ou por disco). Compare com o número de núcleos (nproc): carga 40 em um servidor de 56 threads é tranquila; carga 40 em 8 threads indica fila. Se o primeiro número é muito maior que o terceiro, o problema começou agora.

2. Quem está consumindo: top e htop

htop

No htop, F6 escolhe a ordenação (CPU, memória), F4 filtra por nome, t mostra em árvore e F9 envia sinal para o processo. No top, observe a linha %Cpu(s):

CampoSignificadoSe estiver alto
usCPU usada por aplicaçõesProcesso ou VM consumindo CPU; veja qual no topo da lista
syCPU usada pelo kernelMuita rede, muitas trocas de contexto ou problema de driver
waCPU esperando discoGargalo de disco: vá para o passo 4
stTempo "roubado" pelo hipervisorSó em VMs: o host está sobrecarregado

Em hosts Proxmox, cada VM aparece como um processo kvm. Para saber qual VM é, veja o número após -id na linha de comando ou use qm list e compare com o PID.

3. Memória: free e vmstat

free -h
vmstat 1 10

Em free, olhe a coluna available, não free. No vmstat, que mostra uma linha por segundo:

  • r: processos esperando CPU. Constantemente maior que o número de núcleos indica falta de CPU.
  • b: processos bloqueados esperando E/S.
  • si e so: entrada e saída de swap. Valores diferentes de zero de forma contínua indicam falta de RAM.
  • wa: espera por disco, como no top.

4. Disco: iostat e iotop

iostat -xz 1
iotop -o

No iostat, observe por disco a coluna %util (perto de 100% significa disco saturado), r_await/w_await (tempo médio de cada operação em milissegundos; em NVMe, valores acima de poucos milissegundos sob carga moderada merecem atenção) e aqu-sz (fila). O iotop -o mostra só os processos que estão lendo ou gravando agora. Confira também a saúde dos discos com smartctl -a /dev/nvme0n1 e o estado do RAID (cat /proc/mdstat ou zpool status para os NVMe; nos SSDs de sistema, que na maioria dos servidores ficam na controladora HPE Smart Array, veja o artigo «Como verificar o RAID da controladora HPE Smart Array (ssacli) no Linux e no Proxmox»): um disco degradado ou reconstruindo deixa tudo lento.

5. Rede: ss e ip

ss -s
ss -tulpn
ss -tn state established | awk 'NR>1 {print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
ip -br addr
ip -s link
  • ss -s: resumo com o total de conexões TCP; milhares em timewait ou synrecv podem indicar ataque ou aplicação sem reaproveitamento de conexões.
  • ss -tulpn: portas abertas e o processo dono de cada uma.
  • O terceiro comando conta conexões estabelecidas por IP de origem, útil para achar um cliente abusivo.
  • ip -s link: contadores de erros e descartes da placa de rede. Erros crescendo indicam problema físico ou de driver.

Para lentidão vista de fora do servidor (perda de pacotes, latência alta), use mtr a partir do seu computador até o servidor e veja o artigo «Perda de pacotes e lentidão no servidor: como diagnosticar com mtr, traceroute e iperf3».

6. Mensagens do kernel: dmesg

dmesg -T --level=err,warn | tail -50
journalctl -k -p warning -b

Procure por erros de disco (I/O error, nvme ... timeout, ata ... failed command), memória (EDAC, Machine Check), OOM killer (Out of memory), rede (link is down, NETDEV WATCHDOG) e temperatura (temperature above threshold). Erros de hardware devem ser reportados em ticket.

7. Pressão de recursos (PSI)

Kernels atuais informam diretamente quanto tempo as tarefas ficaram travadas esperando cada recurso:

cat /proc/pressure/cpu /proc/pressure/memory /proc/pressure/io

O valor avg10 da linha some é a porcentagem dos últimos 10 segundos em que algum processo esperou. Valores persistentes acima de 10–20% mostram claramente onde está o gargalo.

Tabela rápida: sintoma e comando

SintomaComece por
Tudo lento, carga altatop (ver us x wa), vmstat 1
Lento ao gravar ou ler arquivosiostat -xz 1, iotop -o, cat /proc/mdstat
Processos sendo encerradosfree -h, journalctl -k | grep -i oom
Serviço fora do arsystemctl --failed, journalctl -u nome
Muitas conexões, site lentoss -s, contagem de conexões por IP
Disco cheiodf -hT, df -i, ncdu -x /
Reinícios inesperadosjournalctl --list-boots, journalctl -b -1 -n 50, ipmitool sel elist (log de eventos do hardware, lido no próprio servidor)

Como saber se funcionou

O diagnóstico está completo quando você consegue apontar o recurso saturado e o processo (ou VM) responsável. Depois da correção, repita os mesmos comandos e compare: carga próxima do normal, wa baixo, available com folga e sem novos erros no dmesg.

Problemas comuns

  • iostat: command not found: instale o pacote sysstat.
  • O iotop não mostra nada: use o iotop-c, versão mantida, e rode como root.
  • Carga alta, mas CPU ociosa: processos presos em E/S (estado D no top). Investigue o disco, o RAID ou montagens de rede (NFS/CIFS) que pararam de responder.
  • Não consigo nem rodar comandos: use o console remoto pela Central do Cliente → Serviços → clique no servidor → Console. Lá, comandos simples como top e dmesg ainda costumam responder.

Para acompanhar esses números ao longo do tempo, em vez de só no momento do problema, veja também o artigo «Netdata ou Prometheus e Grafana: como monitorar as métricas do servidor».

Perguntas frequentes

Qual valor de load average é alto?

Depende do número de núcleos (nproc). Uma carga constantemente acima do número de threads indica fila; abaixo disso, o servidor costuma estar folgado.

Como saber se a lentidão é do disco?

Veja se o wa do top está alto e se o iostat -xz 1 mostra %util perto de 100% ou tempos de espera altos. O iotop -o mostra quem está usando o disco.

Como descobrir qual VM do Proxmox está consumindo CPU?

No top ou htop, cada VM é um processo kvm; o número após -id na linha de comando é o ID da VM, que você confere com qm list.

O que significa processo em estado D?

É um processo bloqueado esperando E/S, geralmente disco ou montagem de rede. Vários processos em D elevam a carga mesmo com a CPU ociosa.

Leitura complementar

Precisa de ajuda?

Se identificar erro de hardware ou não encontrar a causa da lentidão, abra um ticket com a saída de uptime, vmstat 1 10, iostat -xz 1 5, free -h e dmesg -T --level=err,warn | tail -50, informando o horário em que o problema ocorreu.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também