Middle
Como integrar o profiler padrão na sua aplicação em Go?
sobes.tech IA
Resposta da IA
O pacote net/http/pprof fornece manipuladores HTTP para dados de profiling.
Importe-o:
import (
"net/http"
_ "net/http/pprof" // É importante usar '_' para inicialização com efeito colateral
)
Execute um servidor HTTP numa goroutine separada:
go func() {
// Iniciar o servidor no endereço local e na porta padrão do pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Lidar com erro ao iniciar o servidor, por exemplo, registar no log
// log.Printf("falha no servidor pprof: %v", err)
}
}()
Agora pode aceder aos dados de profiling em http://localhost:6060/debug/pprof/.
Principais endpoints disponíveis:
/debug/pprof/: Página principal com a lista de perfis disponíveis./debug/pprof/heap: Perfil do heap./debug/pprof/goroutine: Perfil de goroutines ativas./debug/pprof/block: Perfil de bloqueios./debug/pprof/threadcreate: Perfil de criação de threads do sistema operativo./debug/pprof/cmdline: Linha de comandos da aplicação./debug/pprof/profile: Perfil de CPU (por padrão, recolhe dados durante 30 segundos)./debug/pprof/trace: Perfil de rastreamento de execução (por padrão, recolhe dados durante 1 segundo).
Para analisar perfis de CPU, heap e bloqueios, normalmente usa-se a ferramenta go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # Perfil de CPU durante 30 segundos
go tool pprof http://localhost:6060/debug/pprof/heap # Perfil do heap
Para análise de rastreamento de execução, usa-se a ferramenta go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Importante: Lembre-se da segurança e não abra a porta pprof ao público sem autorização em produção.