Gerenciamento de Processos e Recursos
Depure serviços Rust em execução com ps, htop, sinais e perf. Valide o desligamento gracioso, contagem de threads e crescimento de memória sob carga.
Busque em todas as páginas da documentação
Depure serviços Rust em execução com ps, htop, sinais e perf. Valide o desligamento gracioso, contagem de threads e crescimento de memória sob carga.
pgrep -a my-service
kill -TERM "$(pgrep my-service)"
sleep 2
pgrep my-service || echo "exited cleanly"
htop -p "$(pgrep -d',' my-service)"Quando usar isso:
# Monitora arquivos abertos para vazamento de conexão
PID=$(pgrep my-service)
ls -l /proc/$PID/fd | wc -l
# Amostra de stack com perf (Linux)
sudo perf record -g -p $PID -- sleep 30
sudo perf report
# Resumo do mapa de memória
pmap -x $PID | tail -1// Garante que SIGTERM seja tratado no serviço
use tokio::signal;
async fn shutdown_signal() {
signal::ctrl_c().await.ok();
signal::unix::signal(signal::unix::SignalKind::terminate())
.unwrap()
.recv()
.await
.ok();
}O que isso demonstra:
/proc/$PID/fd conta sockets/arquivos abertosperf atribui CPU a símbolos (com símbolos de depuração)| Sinal | Uso |
|---|---|
| SIGTERM (15) | Solicitação de desligamento gracioso |
| SIGINT (2) | Ctrl-C no desenvolvimento local |
| SIGKILL (9) | Forçar encerramento, sem limpeza |
| SIGHUP (1) | Recarregar configuração (se implementado) |
O runtime multithread padrão usa ~N threads de trabalho; o pool de bloqueio adiciona mais sob carga de spawn_blocking.
perf_event_paranoid. Correção: ajuste sysctl ou sudo.systemctl status para o PID atual.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
tokio-console | Introspecção de tarefas assíncronas | Sempre ativo em produção |
heaptrack / dhat | Profiling do alocador | Verificação rápida de CPU |
bpftrace | Rastreamento em nível de kernel | Desenvolvimento local simples |
Threads de trabalho do Tokio mais algumas threads de bloqueio; investigue centenas.
Use samply ou Instruments em vez de perf do Linux.
Defina ulimits no contexto de segurança do compose ou K8s para serviços Axum com muitas conexões.
Versões de Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026