investigação de performance. Evitar achismo é a chave para resolver problemas de performance de forma confiável. Isso exige abordagem metódica, baseada em dados e evidências. Vou te dar um passo a passo completo que funciona para servidores, aplicações e bancos de dados.
Investigar problemas de performance em servidores Linux exige analisar diversos recursos do sistema, incluindo CPU, disco, rede e memória. Muitas vezes, gargalos estão diretamente relacionados ao uso incorreto de RAM ou interpretação equivocada do cache do sistema. No guia completo sobre gerenciamento de memória no Linux na prática, explicamos como o kernel administra RAM, page cache e swap em ambientes de produção.
1. Defina o problema com precisão
Antes de qualquer análise técnica, é importante saber exatamente o que está lento, quando e em que contexto:
- É o servidor todo ou apenas uma aplicação específica?
- Lento para todos os usuários ou apenas alguns?
- O problema ocorre sempre ou apenas em horários de pico?
Ferramentas úteis: registros de tickets, monitoramento histórico, usuários relatando erro.
2. Colete métricas objetivas
Evite olhar apenas para a percepção. Você precisa de dados concretos:
No servidor
- CPU e memória:
top,htop,vmstat,free -h - I/O de disco:
iostat -x,iotop,df -h - Rede:
iftop,nload,netstat -s - Processos pesados:
ps aux --sort=-%cpu
Em aplicações
- Logs detalhados (
access.log,error.log) - Latência de respostas HTTP (tempo de resposta de endpoints)
- Contadores de filas e threads (PHP-FPM, Node.js, etc.)
No banco de dados
- Consultas lentas:
EXPLAINou logs slow query - Locks e waits (
SHOW PROCESSLISTMySQL,pg_stat_activityPostgres) - Índices e cardinalidade das tabelas
3. Estabeleça um baseline
Compare o comportamento atual com um ponto de referência conhecido:
- Ex.: “Em horário normal, CPU < 40% e tempo médio de resposta < 200ms”.
- Isso evita confundir picos normais com problemas reais.
4. Correlacione métricas com sintomas
Não adianta olhar métrica isolada. Pergunte:
- Quando a CPU sobe, o que mais muda?
- Quando a latência HTTP aumenta, o banco de dados está com lock?
- Quando o disco está saturado, há jobs de backup ou logs crescendo?
Essa correlação transforma dados em diagnóstico confiável, não em achismo.
5. Ferramentas de análise avançada
Para problemas complexos, use monitoramento e profiling:
| Problema | Ferramenta |
|---|---|
| Servidor geral | Zabbix, Prometheus, Netdata |
| Aplicação web | NewRelic, Datadog, Blackfire |
| Banco de dados | Percona Monitoring, pgBadger, pt-query-digest |
| Logs unificados | ELK Stack, Graylog, Loki |
Durante investigações de performance, é comum encontrar servidores com grande quantidade de memória utilizada em cache. Isso não significa necessariamente um problema. Entender como funciona o gerenciamento de memória no Linux ajuda a interpretar corretamente métricas de RAM, buffers e page cache.
6. Teste hipóteses
Depois de identificar um possível gargalo:
- Faça pequenas alterações isoladas (ex.: aumentar cache, limitar threads).
- Meça novamente.
- Se a métrica melhora, você encontrou o ponto crítico.
Isso evita consertar “o que parece errado” e cria evidência concreta de causa e efeito.
7. Documente e repita
- Anote cada passo: dados coletados, análise feita, solução testada.
- Isso cria histórico e reduz risco de “achismo” futuro.
💡 Resumo prático:
- Defina o problema claramente.
- Colete métricas objetivas.
- Compare com baseline.
- Correlacione métricas com sintomas.
- Use ferramentas de análise.
- Teste hipóteses.
- Documente tudo.
Vou montar um checklist de investigação de performance para servidores LAMP/WordPress, passo a passo, sem achismo, totalmente baseado em dados. Ele cobre servidor, banco, PHP-FPM, Nginx/Apache, disco e rede, além de como correlacionar os dados.
Checklist de Investigação de Performance
1️⃣ Definição do problema
- Qual serviço/app está lento? (site, painel, API)
- O problema é contínuo ou apenas em horários de pico?
- Todos os usuários são afetados ou apenas alguns?
- Qual a métrica de referência para normalidade? (ex.: tempo médio < 200ms)
2️⃣ Coleta de métricas do servidor
CPU / Memória
topouhtop→ identificar processos que consomem mais CPU/memóriavmstat 1 5→ verificar swapping ou picos de usofree -h→ memória disponível e buffers/cache
Disco / I/O
iostat -x 1 5→ identificar discos saturadosiotop→ processos que mais escrevem/leemdf -h→ checar espaço disponível
Rede
iftopounload→ tráfego de rede em tempo realnetstat -s→ estatísticas de TCP/UDP
3️⃣ Logs da aplicação
error.logeaccess.log(Nginx/Apache) → verificar erros 5xx ou latências altas- Plugins WordPress que fazem consultas pesadas → identificar por timestamps
- Ativar WP_DEBUG + Query Monitor para rastrear queries lentas e hooks problemáticos
4️⃣ PHP-FPM / Apache / Nginx
- PHP-FPM status:
pm.status_path→ checar processos ativos e filas - Logs de slow requests do PHP-FPM (
request_slowlog_timeout) - Nginx/Apache access log → identificar endpoints mais lentos
- Verificar número de workers, limites de conexão e
max_childrendo PHP-FPM
5️⃣ Banco de dados
- Slow query log (MySQL/MariaDB):
SET GLOBAL slow_query_log = 'ON'; - Analisar queries lentas:
pt-query-digestoumysqldumpslow SHOW PROCESSLIST→ ver queries ativas e locks- Índices e cardinalidade das tabelas →
EXPLAINnas queries críticas
6️⃣ Correlacionar métricas
- CPU alta → é devido a PHP-FPM ou MySQL?
- I/O alto → é leitura de disco ou logs crescendo?
- Latência HTTP alta → é banco, aplicação ou rede?
- Swapping → memória insuficiente ou configuração de cache mal dimensionada?
7️⃣ Testar hipóteses
- Limitar/conter processo específico e medir impacto
- Ativar cache (Redis/OPcache/Cache de página) e medir diferença
- Teste de carga controlado:
abouheypara medir comportamento sob stress
8️⃣ Ferramentas avançadas (opcional)
- Monitoramento contínuo: Zabbix, Netdata, Prometheus/Grafana
- Profiling PHP: Blackfire, Tideways, Xdebug
- Logs centralizados: ELK Stack, Loki, Graylog
- Análise de banco: Percona Monitoring, pgBadger
9️⃣ Documentar
- Coletar métricas antes e depois de qualquer mudança
- Registrar alterações feitas, testes e resultados
- Criar baseline para referência futura
Antes de concluir qualquer diagnóstico de performance, é essencial compreender como o sistema operacional utiliza seus recursos internos. Por isso, recomendamos entender como o Linux gerencia memória na prática em servidores de produção.
FAQ
Investigar performance sem achismo significa diagnosticar problemas de lentidão usando métricas reais, logs e dados observáveis, em vez de alterar configurações aleatoriamente. A abordagem correta envolve coletar métricas do servidor, analisar logs da aplicação, identificar gargalos e validar hipóteses antes de aplicar qualquer otimização.
O primeiro passo é definir claramente o problema.
É necessário identificar qual serviço está lento, se o problema ocorre apenas em horários de pico e qual é a métrica considerada normal para o sistema, como tempo de resposta médio ou uso de CPU esperado.
As métricas mais importantes incluem:
CPU e memória: top, htop, vmstat, free
Disco e I/O: iostat, iotop
Rede: iftop, nload, netstat
Processos ativos: ps aux --sort=-%cpu
Essas ferramentas ajudam a identificar qual recurso do sistema está saturado.
Um baseline define o comportamento normal do servidor.
Por exemplo, saber que a CPU normalmente fica abaixo de 40% ou que a resposta HTTP média é inferior a 200 ms permite detectar rapidamente quando algo foge do padrão esperado.
O diagnóstico correto depende de correlacionar eventos e métricas.
Por exemplo:
CPU alta junto com aumento de latência HTTP pode indicar saturação do PHP-FPM.
Disco saturado pode estar ligado a backups ou consultas de banco pesadas.
Locks no banco podem aumentar o tempo de resposta da aplicação.
Essa correlação transforma dados em diagnóstico real.
Ferramentas comuns usadas por administradores de sistemas incluem:
Monitoramento
Zabbix
Prometheus
Netdata
Aplicações
NewRelic
Datadog
Blackfire
Banco de dados
Percona Monitoring
pt-query-digest
pgBadger
Logs
ELK Stack
Loki
Graylog
Essas plataformas permitem monitoramento contínuo e análise mais profunda.
Após identificar um possível gargalo, o ideal é:
Aplicar uma mudança pequena e isolada.
Medir novamente as métricas.
Comparar com os valores anteriores.
Se o desempenho melhorar após a alteração, é possível confirmar a causa do problema.
Logs são fundamentais para identificar:
Erros de aplicação
Latência em endpoints
Slow queries no banco de dados
Requisições HTTP com alto tempo de resposta
A análise de logs muitas vezes revela problemas invisíveis nas métricas do servidor.
Documentar o processo cria um histórico técnico do ambiente, permitindo:
Repetir diagnósticos no futuro
Identificar padrões de falhas
Evitar diagnósticos baseados em suposições
Isso transforma troubleshooting em um processo profissional e reproduzível.
Veja Mais:
Gerenciamento de Memória no Linux: Guia Prático e Mitos
Diagnóstico completo de problemas de rede em servidores
Decisão estratégica de infraestrutura: comparação técnica para produção
AlmaLinux em Produção: Guia de Boas Práticas e Segurança 2026

