تحديد عدد Goroutines باستخدام pprof
يتطلب اكتشاف تسربات goroutine المحتملة في برنامج Go الخاص بك مراقبة عدد goroutines النشطة بمرور الوقت. على الرغم من أن الأمر go tool pprof القياسي يوفر رؤى حول الحظر، إلا أنه لا يتناول بشكل مباشر عدد goroutine.لتحديد عدد goroutines بشكل فعال، افتح http://localhost:8888/debug/ppprof/ في متصفحك . يقدم هذا رابطين ذوي صلة:
Goroutine goroutine التي تتقاسم نفس الكود الفردي الإدخالات، جنبا إلى جنب مع عددهم. على سبيل المثال:
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- عداء/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:1471 @ 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.يعد
Full Goroutine Stack Dump مفيدًا بشكل خاص في حالات التسرب كشف. يسرد كل goroutine على حدة، بما في ذلك تتبع المكدس الخاص به وحالة النشاط:
goroutine 49 [تلقي تشان، دقيقتين]: 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 تم إنشاؤها بواسطة 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 غوروتين 50 [اختر]: 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 تم إنشاؤها بواسطة 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 0x961 @ 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من خلال استخدام نقاط نهاية pprof هذه، يمكنك مراقبة بشكل فعال عدد goroutines داخل برنامجك، مما يساعد في اكتشاف وحل التسريبات المحتملة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3