Sobre nós Guias Projetos Contactos
Админка
please wait

Introdução

Compreender a gestão de processos e a monitorização de desempenho é essencial para manter sistemas saudáveis. Quando as aplicações abrandam ou os servidores deixam de responder, precisa de ferramentas e técnicas para diagnosticar problemas rapidamente. Este guia aborda abordagens práticas para monitorizar, resolver problemas e optimizar o desempenho do sistema Linux.

Monitorização de Processos

Comandos Básicos

# Listar todos os processos
ps aux
# Árvore de processos (relações pai-filho)
ps auxf
pstree -p
# Monitorização de processos em tempo real
top
htop # Alternativa mais amigável para o utilizador
# Filtrar por utilizador
ps -u username
# Filtrar por nome do processo
ps aux | grep nginx
pgrep nginx

Compreender a Saída do top/htop

top - 14:32:01 up 45 days, 2:15, 3 users, load average: 0.52, 0.58, 0.59
Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 1.2 sy, 0.0 ni, 93.1 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 15842.3 total, 712.3 free, 7256.4 used, 7873.6 buff/cache
MiB Swap: 2048.0 total, 2040.0 free, 8.0 used. 8114.1 avail Mem

Métricas-chave:

  • load average: carga de CPU nos últimos 1/5/15 minutos. Compare com o número de CPUs.
  • us: tempo de CPU em espaço de utilizador
  • sy: tempo de CPU do sistema/kernel
  • id: tempo de CPU em idle
  • wa: à espera de I/O
  • buff/cache: memória usada para cache (disponível se necessário)

Atalhos do htop

TeclaAcção
F6Ordenar por coluna
F9Terminar processo
F4Filtrar por nome
tVista em árvore
HOcultar threads de utilizador
SpaceMarcar processo

Gestão de Memória

Utilização de Memória

# Resumo de memória
free -h
# Informação detalhada de memória
cat /proc/meminfo
# Memória por processo
ps aux --sort=-%mem | head -20
# Mapa de memória detalhado do processo
pmap <pid>

Compreender a Memória

 total used free shared buff/cache available
Mem: 15Gi 7.1Gi 696Mi 416Mi 7.7Gi 7.9Gi
Swap: 2.0Gi 8.0Mi 2.0Gi
  • available > free porque buff/cache pode ser recuperada
  • buff/cache elevado é normal e bom (cache de leituras do disco)
  • Vigie a memória available, não a free

Encontrar Fugas de Memória

# Monitorizar a memória do processo ao longo do tempo
while true; do
ps -o pid,vsz,rss,comm -p $(pgrep myapp)
sleep 60
done >> /var/log/memory-monitor.log
# Verificar se a memória do processo continua a crescer
watch -n 5 'ps -o pid,rss,command -p $(pgrep myapp)'

Gestão de CPU

Utilização de CPU por Processo

# Principais consumidores de CPU
ps aux --sort=-%cpu | head -20
# Utilização de CPU por core
mpstat -P ALL 1
# Monitorização de CPU em tempo real
htop
# Prima F2 → Opções de visualização → Assinale «Detailed CPU time»

Identificar Gargalos de CPU

# Verificar processos limitados por CPU
top
# Procurar processos com %CPU elevada
# Verificar espera de I/O
vmstat 1
# wa (wait) elevado indica gargalo de I/O, não de CPU
# strace ao processo para depuração
strace -c -p <pid> # Estatísticas de system calls

Monitorização de I/O de Disco

I/O em Tempo Real

# I/O por processo
iotop
iotop -oP # Apenas processos a fazer I/O
# Actividade do disco
iostat -xz 1
# Tempo de espera de I/O
vmstat 1
# Vigiar a coluna «wa»

Compreender o iostat

iostat -xz 1
Device r/s w/s rMB/s wMB/s %util
sda 45.00 120.00 1.80 48.00 85.00
  • %util > 80%: o disco está a tornar-se um gargalo
  • r/s, w/s: leituras e escritas por segundo
  • await: tempo médio de espera (ms) — elevado = problema

Encontrar Ficheiros Grandes

# Encontrar ficheiros com mais de 1GB
find /var -type f -size +1G
# Utilização de disco por directório
du -sh /*
du -sh /var/*
# Utilização de disco interactiva
ncdu /var

Controlo de Processos

Sinais

# Terminação graciosa (SIGTERM)
kill <pid>
kill -15 <pid>
# Forçar terminação (SIGKILL)
kill -9 <pid>
# Terminar por nome
pkill nginx
killall nginx
# Enviar HUP (recarregar configuração)
kill -HUP <pid>
# Sinais comuns:
# SIGTERM (15): encerramento gracioso
# SIGKILL (9): forçar terminação (não pode ser interceptado)
# SIGHUP (1): hangup/recarregar
# SIGSTOP (19): pausar processo
# SIGCONT (18): retomar processo

Prioridade de Processo

# Iniciar com prioridade mais baixa (nicer)
nice -n 10 ./long-running-script.sh
# Alterar a prioridade de um processo em execução
renice -n 10 -p <pid>
# Intervalo de prioridade: -20 (mais alta) a 19 (mais baixa)
# Apenas o root pode definir valores nice negativos

Processos em Segundo Plano

# Executar em segundo plano
./script.sh &
# Mover o processo actual para segundo plano
Ctrl+Z # Suspender
bg # Retomar em segundo plano
# Trazer para primeiro plano
fg
# Listar jobs em segundo plano
jobs
# Manter em execução após logout
nohup ./script.sh &
# A saída vai para nohup.out
# Ou usar disown
./script.sh &
disown %1

Limites de Recursos do Sistema

Ver Limites

# Limites da shell actual
ulimit -a
# Limites do processo
cat /proc/<pid>/limits

Definir Limites

# Temporário (sessão actual)
ulimit -n 65535 # Máximo de ficheiros abertos
# Permanente: /etc/security/limits.conf
# <user> <type> <item> <value>
www-data soft nofile 65535
www-data hard nofile 65535
* soft nproc 4096

Ferramentas de Monitorização

vmstat - Estatísticas de Memória Virtual

vmstat 1
# procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
# r b swpd free buff cache si so bi bo in cs us sy id wa st
# 1 0 0 712340 125612 7935460 0 0 1 45 102 234 5 1 93 1 0
  • r: processos em execução (> CPUs = sobrecarga)
  • b: processos bloqueados (à espera de I/O)
  • si/so: swap in/out (deveria ser 0)
  • bi/bo: I/O de bloco

sar - System Activity Reporter

# Instalar sysstat para o sar
sudo apt install sysstat
# Histórico de CPU
sar -u
# Histórico de memória
sar -r
# Histórico de I/O de disco
sar -d
# Histórico de rede
sar -n DEV

dstat - Estatísticas Abrangentes

# Instalar
sudo apt install dstat
# Monitorização tudo-em-um
dstat -cdngy
# CPU, disco, rede, paging, sistema

Fluxos de Trabalho de Resolução de Problemas

Utilização Elevada de CPU

# 1. Identificar o processo
top -c
# Anotar o PID do processo com CPU elevada
# 2. Verificar o que está a fazer
strace -p <pid> 2>&1 | head -50
# 3. Verificar se está a usar todos os cores
mpstat -P ALL 1
# 4. Fazer profiling se necessário (para as suas próprias apps)
perf top -p <pid>

Utilização Elevada de Memória

# 1. Verificar a memória global
free -h
# 2. Encontrar os maiores consumidores de memória
ps aux --sort=-%mem | head -10
# 3. Verificar fugas de memória
pmap <pid> | tail -1
# 4. Limpar caches (se necessário, normalmente não)
sync; echo 3 > /proc/sys/vm/drop_caches

Sistema Sem Resposta

# 1. Verificar o load average
uptime
# 2. Verificar espera de I/O
vmstat 1
# 3. Verificar falta de memória (out of memory)
dmesg | tail -50 | grep -i "out of memory"
# 4. Verificar utilização de swap
free -h
swapon --show
# 5. Verificar espaço em disco
df -h

Logging e Persistência

Tornar Persistentes os Logs do journald

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

Ver Logs de Arranques Anteriores

# Listar arranques
journalctl --list-boots
# Ver arranque específico
journalctl -b -1 # Arranque anterior
journalctl -b -2 # Há dois arranques
# Ver avisos e erros
journalctl -p warning
journalctl -b -1 -p err

A Mentalidade de Resolução de Problemas Sénior: Primeiros 60 Segundos

Quando faz SSH para um servidor em chamas, execute estes comandos por esta ordem:

# 1. Load averages — está a aumentar ou a diminuir?
uptime
# 2. Erros do kernel — OOM kills, erros de I/O de disco?
dmesg | tail
# 3. Vista global do sistema — processos, memória, swap, CPU
vmstat 1
# 4. Equilíbrio de CPU entre cores — há um core no máximo?
mpstat -P ALL 1
# 5. Que processo está a causar a carga?
pidstat 1
# 6. Latência e saturação do disco
iostat -xz 1
# 7. Utilização de memória e cache
free -m
# 8. Throughput de rede
sar -n DEV 1
# 9. Falhas/retransmissões de ligações TCP
sar -n TCP,ETCP 1
# 10. A visão geral clássica
top

Diagnóstico Rápido: CPU Alta Mas Baixo Tempo de Utilizador?

Se a CPU estiver alta mas us (espaço de utilizador) estiver baixo:

  • sy (system) alto: demasiadas mudanças de contexto. Verifique se há demasiadas threads/processos.
  • wa (wait) alto: gargalo de I/O de disco, não de CPU.
  • in (interrupts) alto: placa de rede ou interrupções de hardware.

Emergência de Descritores de Ficheiro

«Too many open files» (EMFILE) faz a produção falhar. Verificação e correcção rápidas:

# Verificar limites actuais
ulimit -Sn # Limite soft (pode ser aumentado)
ulimit -Hn # Limite hard (teto)
# Para um processo específico
cat /proc/<pid>/limits | grep "open files"
# Contar ficheiros abertos actualmente
ls /proc/<pid>/fd | wc -l

Correcção permanente em /etc/security/limits.conf:

* soft nofile 200000
* hard nofile 500000

Verificação de Saturação de I/O de Disco

Se iostat -xz 1 mostrar %util > 80%, o disco está saturado.

Perguntas rápidas: 1. Quem está a escrever? → iotop 2. É aleatório ou sequencial? → IOPS alto com baixo throughput = aleatório

  1. O disco está a falhar? → Verifique dmesg | tail para erros

Benchmark rápido do disco:

# Velocidade de escrita (contornar a cache)
dd if=/dev/zero of=testfile bs=1M count=1024 oflag=dsync

Conclusão

Uma gestão eficaz de processos e desempenho exige compreender as métricas do sistema e ter as ferramentas certas prontas. Use htop para monitorização interactiva, vmstat e iostat para identificar gargalos, e conheça os seus sinais para controlo de processos. Engenheiros sénior isolam recursos de forma sistemática (CPU, RAM, Disco, Rede) em vez de adivinhar ao acaso. A monitorização regular ajuda a detectar problemas antes de se tornarem críticos.

 
 
 
Языки
Темы
Copyright © 1999 — 2026
ZK Interactive