"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se utiliza pprof para perfilar la cantidad de gorutinas en su programa Go?

¿Cómo se utiliza pprof para perfilar la cantidad de gorutinas en su programa Go?

Publicado el 2024-11-06
Navegar:435

How do you use pprof to profile the number of goroutines in your Go program?

Perfilar el número de gorutinas con pprof

Detectar posibles fugas de gorutinas en su programa Go requiere monitorear el número de gorutinas activas a lo largo del tiempo. Si bien el comando pprof estándar de la herramienta go proporciona información sobre el bloqueo, no aborda directamente el recuento de gorutinas.

Para perfilar de manera efectiva el número de gorutinas, abra http://localhost:8888/debug/pprof/ en su navegador. . Esto presenta dos enlaces relevantes:

  • Goroutine: http://localhost:8888/debug/pprof/goroutine?debug=1
  • Completo Volcado de pila de rutinas: http://localhost:8888/debug/pprof/goroutine?debug=2

El enlace Goroutine muestra goroutines que comparten el mismo código como entradas individuales, junto con su recuento. Por ejemplo:

1 @ 0x42f223 0x42f2e4 0x40542f 0x404f4b 0x4a0586 0x4600a1
#   0x4a0586    gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers 0x56   /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:164

1 @ 0x42f223 0x43dfd7 0x43d532 0x4a04ed 0x4600a1
#   0x4a04ed    gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).processRunners 0x45d    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:147

El número 1 antes de @ indica una instancia de cada goroutine.

El Volcado de pila completo de Goroutine es particularmente útil para la detección de fugas. Enumera cada gorutina individualmente, incluido su seguimiento de pila y estado de actividad:

goroutine 49 [chan receive, 2 minutes]:
gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers(0xc820103ee0, 0xc820274000, 0xc820274060, 0xc8201d65a0)
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:164  0x56
created by gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).Run
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:294  0x41b

goroutine 50 [select]:
gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).processRunners(0xc820103ee0, 0x0, 0xc820274060, 0xc8201d65a0)
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:147  0x45d
created by gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands.(*RunCommand).startWorkers
    /home/me/go/src/gitlab.com/gitlab-org/gitlab-ci-multi-runner/commands/multi.go:165  0x96

Al utilizar estos puntos finales pprof, puede monitorear de manera efectiva el número de gorutinas dentro de su programa, lo que ayuda en la detección y resolución de posibles fugas de gorutinas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3