"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك استخدام pprof لتحديد عدد goroutines في برنامج Go الخاص بك؟

كيف يمكنك استخدام pprof لتحديد عدد goroutines في برنامج Go الخاص بك؟

تم النشر بتاريخ 2024-11-06
تصفح:917

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

تحديد عدد Goroutines باستخدام pprof

يتطلب اكتشاف تسربات goroutine المحتملة في برنامج Go الخاص بك مراقبة عدد goroutines النشطة بمرور الوقت. على الرغم من أن الأمر go tool pprof القياسي يوفر رؤى حول الحظر، إلا أنه لا يتناول بشكل مباشر عدد goroutine.

لتحديد عدد goroutines بشكل فعال، افتح http://localhost:8888/debug/ppprof/ في متصفحك . يقدم هذا رابطين ذوي صلة:

  • Goroutine : http://localhost:8888/debug/pprof/goroutine?debug=1
  • Full Goroutine Stack Dump: http://localhost:8888/debug/pprof/goroutine?debug=2
يعرض الرابط

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:147
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.

يعد

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 0x96
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
من خلال استخدام نقاط نهاية pprof هذه، يمكنك مراقبة بشكل فعال عدد goroutines داخل برنامجك، مما يساعد في اكتشاف وحل التسريبات المحتملة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3