Trazado de la ejecución
go tool trace para analizar el comportamiento de las goroutines
Trazado de la ejecución es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
¿Qué es el trazado de la ejecución?
El trazador de ejecución de Go registra una línea temporal de la planificación de goroutines, los eventos del GC, las llamadas al sistema y el crecimiento del heap. Proporciona una vista visual del paralelismo y la latencia que no ofrecen los perfiles de CPU o del heap.
Capturar un trazado
Capture un trazado mediante el punto de conexión HTTP:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.outTrazado basado en archivos
Use runtime/trace para registrar un trazado mediante programación:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Capture un trazado durante las ejecuciones de pruebas o benchmarks:
go test -trace trace.out -bench=. ./...
go tool trace trace.outVisor de trazados
El visor de trazados (go tool trace) se abre en un navegador y muestra las líneas temporales de las goroutines, los eventos del GC, el tamaño del heap y los rastros de pila de cada goroutine en cualquier momento.
Análisis de goroutines
La vista de análisis de goroutines agrupa las goroutines por función y muestra cuánto tiempo pasa cada una en estos estados: running, runnable (esperando un P), blocked (canal/mutex/syscall) y sleeping.
Detectar la latencia del planificador
Un tiempo elevado en estado "runnable" significa que las goroutines están listas, pero no se han planificado. Esto indica que hay demasiadas goroutines compitiendo por las Ps de GOMAXPROCS o que el proceso no dispone de suficiente CPU.
Impacto del GC
Las pausas stop-the-world del GC aparecen como barras grises sobre todas las goroutines. Las pausas largas o un GC frecuente indican asignaciones excesivas; combine esta información con el perfilado del heap para reducirlas.
Anotaciones del usuario
Añada spans personalizados al trazado mediante trace.WithRegion y trace.Log para anotar sus propias secciones de código y facilitar el análisis.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})task y region
trace.NewTask agrupa regiones relacionadas bajo una task con nombre, lo que permite medir la latencia de extremo a extremo de una operación lógica que abarca varias goroutines.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()Trazado frente a perfilado
Perfil de CPU: qué funciones consumen CPU con el tiempo. Perfil del heap: qué funciones asignan memoria. Trazado: cuándo se ejecutan y se bloquean las goroutines, y cómo se intercala el GC; herramientas diferentes para preguntas diferentes.
Comprobación rápida
¿Qué significa que una goroutine esté en estado "runnable" en el trazado de ejecución?
Resumen: trazado de la ejecución
Puntos clave:
- go tool trace muestra las líneas temporales de las goroutines, los eventos del GC y la planificación
- Capture trazados mediante el punto de conexión HTTP o el paquete runtime/trace
- Tiempo en estado runnable → contención del planificador; pausas del GC → asignaciones excesivas
- Las anotaciones del usuario (WithRegion, NewTask) marcan sus propias secciones
Preguntas frecuentes
¿La lección «Trazado de la ejecución» es gratis?
Sí — el texto completo de «Trazado de la ejecución» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Trazado de la ejecución»?
go tool trace para analizar el comportamiento de las goroutines Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Trazado de la ejecución»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Escritura de benchmarks con testing.B
- Perfilado de CPU con pprof
- Perfilado del heap y de las asignaciones
- Trazado de la ejecución