Linux para quem opera
Um processo tem PID, ambiente, arquivos abertos e limites. Operar Linux começa por observar antes de reiniciar: reiniciar apaga evidências e pode apenas deslocar a falha.
Faça um diagnóstico em cinco minutos
Seção intitulada “Faça um diagnóstico em cinco minutos”uptime # carga; compare com o número de CPUsfree -h # memória disponível e swap, não só "used"df -hT; df -ih # espaço e inodes são problemas diferentesps -eo pid,ppid,%cpu,%mem,stat,cmd --sort=-%cpu | headss -lntp # portas em escuta e processo donojournalctl -u minha-api --since '-15 min' --no-pagerCarga alta não prova CPU saturada: tarefas esperando I/O também entram no cálculo.
Use top ou vmstat 1 e observe wa (I/O wait). Se df -h parece normal mas a
aplicação não cria arquivos, confira inodes com df -ih. Antes de investigar memória,
registre o timestamp e a unidade afetada para correlacionar com métricas e deploys.
systemd: estado, logs e parada correta
Seção intitulada “systemd: estado, logs e parada correta”systemctl status minha-apisystemctl show minha-api -p MainPID -p Restart -p MemoryCurrentsudo systemctl reload minha-api # só se a unidade suporta reloadsudo systemctl restart minha-apiLeia a unidade com systemctl cat minha-api. ExecStart, User, EnvironmentFile,
WorkingDirectory e Restart explicam grande parte dos incidentes. Não edite arquivos
em /usr/lib/systemd/system: crie um override com systemctl edit minha-api, depois
systemctl daemon-reload. Um restart bem-sucedido não é recuperação se a causa foi
disco cheio, credencial expirada ou dependência indisponível.
Permissões e recursos
Seção intitulada “Permissões e recursos”Permissões são avaliadas para usuário, grupo e outros; chmod 644 arquivo permite
leitura a todos, mas nunca é uma correção automática para Permission denied.
Confirme o dono e cada diretório do caminho:
id; namei -l /srv/minha-api/dados.dbls -l /srv/minha-api/dados.dbulimit -n; cat /proc/$(pidof minha-api)/limits | grep 'open files'Um processo pode ter capabilities, ACLs, SELinux/AppArmor ou limites de container além
do chmod. Em produção, prefira uma conta de serviço sem shell e diretórios dedicados;
não execute a aplicação como root para contornar acesso negado.
Sinais, disco e evidência
Seção intitulada “Sinais, disco e evidência”SIGTERM pede encerramento gracioso; SIGKILL não pode ser tratado. Teste se sua
aplicação fecha conexões e grava estado antes do prazo do orquestrador. Para encontrar
arquivos removidos que ainda ocupam espaço, use lsof +L1; para I/O, iostat -xz 1.
Colete esses dados antes de qualquer ação irreversível.
Próximo passo: aplique o mesmo método ao caminho de uma requisição em Redes na prática. Em ambientes com container, relacione os limites vistos aqui a cgroups e aos limites do runtime.