← Production Support L3: investigar e recuperar
09 / 12 · 50 MIN

Diagnóstico Linux, JVM e conectividade

Escolhe observações que distinguem falta de recursos, espera da aplicação e falhas de ligação.

Bytes, inodes e ficheiros ainda abertos

Num filesystem Linux, espaço em bytes e inodes são recursos diferentes. Com df -h e df -i, no mount correto, compara as duas utilizações. Se há bytes livres mas os inodes estão esgotados, procurar apenas ficheiros grandes falha o diagnóstico. Noutro caso, apagar o nome de um log pode não libertar os blocos enquanto um processo mantiver o ficheiro aberto. As entradas em /proc/PID/fd ajudam a identificar descritores, com as permissões necessárias. Investiga primeiro; uma rotação ou reabertura suportada pela aplicação pode ser preferível a terminar o processo. Confirma o efeito e preserva logs necessários ao incidente.

Logs do processo e da janela certos

Um restart separa execuções que podem partilhar o nome do serviço. Em systemd, journalctl permite filtrar por unidade, boot e intervalo; --utc uniformiza a apresentação temporal. Num exercício, a falha aconteceu no boot anterior e o operador consulta apenas o atual. A ausência de linhas não exclui a falha. Confirma a janela, o boot relevante, retenção e permissões antes de concluir que não existe evidência. Relaciona PID e execução quando disponíveis. A conversão para UTC não corrige um relógio que estava errado; regista o desvio conhecido ao reconstruir eventos entre máquinas.

Pressão de recursos com CPU baixa

PSI, quando disponível no kernel, mede tempo em que tarefas ficam bloqueadas por pressão de CPU, memória ou I/O. Em /proc/pressure/io, some inclui períodos em que pelo menos algumas tarefas esperam; full cobre espera simultânea de todas as tarefas não inativas. Num cenário fictício, a latência cresce, a CPU permanece baixa e o indicador de I/O sobe. Isso apoia investigar espera, mas não identifica sozinho um disco avariado nem uma query culpada. Correlaciona a janela com throughput, dispositivos, filas e dependências. Evita tratar percentagem de CPU como medida completa de capacidade.

Amostras JVM e limites das ferramentas

Uma thread à espera num único instante pode estar a funcionar normalmente. Compara amostras ao longo do incidente, grupos de stacks, duração e métricas de pools. Na documentação HotSpot JDK 25, jcmd permite consultar comandos suportados e obter Thread.print; a recolha tem impacto que depende do número de threads. Confirma JVM, versão, PID e permissões antes de usar uma ferramenta. Não apliques automaticamente um comando HotSpot a qualquer runtime WebSphere. Num exemplo, três amostras mostram espera por JDBC enquanto o DBA observa transações bloqueadas: aumentar threads pode ampliar a fila sem libertar a dependência.

TLS: destino, nome e confiança

Uma ligação TCP estabelecida não comprova identidade TLS. Para um endpoint fictício, OpenSSL 3.5 permite indicar destino com -connect, SNI com -servername e nome esperado com -verify_hostname. A opção -verify_return_error faz falhar a operação quando a validação devolve erro; sem ela, s_client pode continuar apesar de problemas de confiança. Usa a cadeia e trust store adequadas ao teste e identifica o ponto de terminação TLS. Um teste bem-sucedido num portátil não demonstra que o trust store da aplicação é igual. Conserva nome, destino, momento e resultado, sem colocar chaves privadas no ticket.

DNS no contexto afetado

O resolver e o search path de um Pod podem diferir dos usados no portátil ou no nó. Se apenas a aplicação falha a resolução, observa o contexto afetado: nome consultado, namespace, /etc/resolv.conf, resposta e acesso ao serviço DNS. A documentação Kubernetes propõe testes controlados a partir de um Pod de diagnóstico. Usa ferramentas e permissões aprovadas; não assumes que um exec está sempre disponível. Num exemplo, um nome curto funciona num namespace e falha noutro. Comparar o nome completo e o search path é mais discriminante do que alterar imediatamente o DNS de toda a organização.

NA PRÁTICA

Num serviço fictício de fundos, CPU está a 20%, os pedidos esperam por ligações e a pressão de I/O aumentou. Recolhe medidas no mesmo intervalo e evita aumentar concorrência sem compreender o gargalo.

Armadilhas comuns

Disco como apenas bytes; CPU baixa como ausência de saturação; um dump como prova de deadlock; handshake como identidade validada.

Tópicos relacionados: Fazer triagem e organizar a resposta · Investigar por hipóteses e dependências · Recuperar cadeias batch sem falsificar sucesso

Leva esta ideia contigo

Define uma hipótese, uma observação discriminante e o limite da conclusão.

Criar conta

Referência: Pressure Stall Information · DR Production Support L3 2026.4; Linux, JDK 25 HotSpot, OpenSSL 3.5 and Kubernetes examples require installed-version checks