Memprofilkan Bilangan Goroutine dengan pprof
Mengesan kemungkinan kebocoran goroutine dalam program Go anda memerlukan pemantauan bilangan goroutine yang aktif dari semasa ke semasa. Walaupun arahan pprof alat go standard memberikan cerapan tentang penyekatan, ia tidak secara langsung menangani kiraan goroutine.
Untuk memprofilkan bilangan goroutine dengan berkesan, buka http://localhost:8888/debug/pprof/ dalam penyemak imbas anda . Ini membentangkan dua pautan yang berkaitan:
Pautan Goroutine memaparkan goroutine yang berkongsi kod yang sama seperti tunggal penyertaan, bersama-sama dengan kiraan mereka. Contohnya:
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
Nombor 1 sebelum @ menunjukkan satu tika setiap goroutine.
Full Goroutine Stack Dump amat berguna untuk pengesanan kebocoran. Ia menyenaraikan setiap goroutine secara individu, termasuk jejak tindanan dan status aktivitinya:
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
Dengan menggunakan titik akhir pprof ini, anda boleh memantau dengan berkesan bilangan goroutine dalam program anda, membantu dalam pengesanan dan penyelesaian potensi goroutine bocor.
Atas ialah kandungan terperinci Bagaimanakah anda menggunakan pprof untuk memprofilkan bilangan goroutine dalam program Go anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!