Otimização e Monitoramento de Desempenho no Linux
Ao analisar problemas de desempenho em ambientes Linux, é essencial focar nos recursos críticos: CPU, memória, interfaces de rede e dispositivos de armazenamento.
Ferramentas para Análise de Processos
Utilitário ps
Para visualizar informações detalhadas sobre processos, utilize o comando ps com opções personalizadas:
ps -eo pid,cmd,%cpu,%mem --sort=-%cpu | head
Para exibir a árvore de processos:
ps -ef --forest
Encontrar processos específicos por nome e listar seus PIDs:
ps -C nginx -o pid=
Monitorar continuamente os processos com maior consumo de memória:
watch -n 2 'ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 5'
Utilitário pgrep
Pesquisar processos por critérios específicos:
pgrep -u www-data -l
pgrep -P 1234
Ferramenta top
Monitoramento em tempo real de processos e uso de recursos:
top -d 2 -u postgres
Dentro do top, use P para ordenar por CPU, M para memória, e 1 para exibir cada núcleo de CPU individualmente.
Ferramenta htop
Uma versão avançada do top com interface interativa:
htop -s PERCENT_MEM
No htop, pressione t para visualizar a árvore de processos e l para listar arquivos abertos pelo processo selecionado.
Utilitário pstree
Exibir procesoss em formato de árvore:
pstree -p -a
Ferramenta lsof
Listar arquivos abertos por processos, útil para diagnósticos de E/S:
lsof -p 4567
lsof -i :8080 -n
Recuperar arquivos excluídos acidentalmente (se ainda referenciados por processos):
lsof | grep '(deleted)'
Análise de CPU e Carga
Utilitário uptime
A carga média do sistema indica o número de processos na fila de execução. Para um sistema saudável, a carga por núcleo de CPU deve ser inferior a 3.
uptime
Monitoramento de Memória
Comando free
Visualizar o uso de memória, incluindo buffers e cache:
free -h
Para limpar caches de memória (use com cautela em produção):
sync
echo 3 > /proc/sys/vm/drop_caches
Ferramenta pmap
Exibir o mapeamento de memória de um processo específico:
pmap -x 8901
Utilitário vmstat
Monitorar estatísticas de memória virtual e atividade do sistema:
vmstat 2 5
Campos importantes: r (processos executáveis), b (processos bloqueados), si/so (swap in/out).
Análise de Dispositivos de Armazenamento
Ferramenta iostat
Avaliar o desempenho de E/S de discos:
iostat -dx 3
Utilitário iotop
Monitorar a E/S de processos individualmente:
iotop -o
Monitoramento de Rede
Ferramenta iftop
Visualizar o tráfego de rede em tempo real por interface:
iftop -i eth0
Utilitário nload
Exibir a taxa de transferência de rede em gráficos simples:
nload enp0s3
Ferramentas de Monitoramento Integrado
Utilitário dstat
Combinar estatísticas de CPU, memória, disco e rede em uma saída:
dstat -cdnm
Ferramenta glances
Monitoramento abrangente com suporte a cliente-servidor:
glances -s # Modo servidor
glances -c 192.168.1.10 # Modo cliente
Ferramenta perf
Coletar dados de desempenho a nível de hardware e software:
perf stat -a sleep 5
perf list
Técnicas de Otimização
Afinidade de CPU
Vincular processos a núcleos específicos para reduzir trocas de contexto e melhorar cache:
taskset -c 0,1 ./meu_aplicativo
Ajuste de Prioridade de Processos
Modificar a prioridade de execução usando nice e renice:
nice -n 10 ./tarefa_pesada
renice -p 1234 -n -5
Otimização de Parâmetros de Rede TCP
Ajustar parâmetros no arquivo /etc/sysctl.conf para melhorar desempenho de rede:
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.core.somaxconn = 16384
Aplicar alterações com:
sysctl -p
Configuração de Regras de Firewall
Consolidar regras do iptables para reduzir sobrecarga de processamento:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT