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):
| Campo | Significado | Se estiver alto |
|---|---|---|
us | CPU usada por aplicações | Processo ou VM consumindo CPU; veja qual no topo da lista |
sy | CPU usada pelo kernel | Muita rede, muitas trocas de contexto ou problema de driver |
wa | CPU esperando disco | Gargalo de disco: vá para o passo 4 |
st | Tempo "roubado" pelo hipervisor | Só 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.sieso: entrada e saída de swap. Valores diferentes de zero de forma contínua indicam falta de RAM.wa: espera por disco, como notop.
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 emtimewaitousynrecvpodem 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
| Sintoma | Comece por |
|---|---|
| Tudo lento, carga alta | top (ver us x wa), vmstat 1 |
| Lento ao gravar ou ler arquivos | iostat -xz 1, iotop -o, cat /proc/mdstat |
| Processos sendo encerrados | free -h, journalctl -k | grep -i oom |
| Serviço fora do ar | systemctl --failed, journalctl -u nome |
| Muitas conexões, site lento | ss -s, contagem de conexões por IP |
| Disco cheio | df -hT, df -i, ncdu -x / |
| Reinícios inesperados | journalctl --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 pacotesysstat.- O
iotopnão mostra nada: use oiotop-c, versão mantida, e rode como root. - Carga alta, mas CPU ociosa: processos presos em E/S (estado
Dnotop). 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
topedmesgainda 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
- Brendan Gregg: análise de desempenho no Linux em 60 segundos
- Documentação do kernel: Pressure Stall Information
- Manual do ss (Debian 13)
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.
