"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go 프로그램의 고루틴 수를 프로파일링하기 위해 pprof를 어떻게 사용합니까?

Go 프로그램의 고루틴 수를 프로파일링하기 위해 pprof를 어떻게 사용합니까?

2024-11-06에 게시됨
검색:594

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

pprof를 사용하여 고루틴 수 프로파일링

Go 프로그램에서 잠재적인 고루틴 누출을 감지하려면 시간이 지남에 따라 활성화된 고루틴 수를 모니터링해야 합니다. 표준 go 도구 pprof 명령은 차단에 대한 통찰력을 제공하지만 고루틴 수를 직접적으로 다루지는 않습니다.

고루틴 수를 효과적으로 프로파일링하려면 브라우저에서 http://localhost:8888/debug/pprof/를 엽니다. . 이는 두 개의 관련 링크를 제공합니다:

  • 고루틴: http://localhost:8888/debug/pprof/goroutine?debug=1
  • 전체 고루틴 스택 덤프: http://localhost:8888/debug/pprof/goroutine?debug=2

고루틴 링크는 동일한 코드를 단일로 공유하는 고루틴을 표시합니다. 항목과 개수를 함께 표시합니다. 예:

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

@ 앞의 숫자 1은 각 고루틴의 하나의 인스턴스를 나타냅니다.

전체 고루틴 스택 덤프는 누출에 특히 유용합니다. 발각. 스택 추적 및 활동 상태를 포함하여 각 고루틴을 개별적으로 나열합니다.

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

이 pprof 엔드포인트를 활용하면 잠재적인 고루틴 누출을 감지하고 해결하는 데 도움이 됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3