0Pricing
Go Academy · บทเรียน

การทำโปรไฟล์ CPU ด้วย pprof

เก็บรวบรวมและแสดงภาพโปรไฟล์ CPU

การทำโปรไฟล์ CPU ด้วย pprof เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

pprof คืออะไร

แพ็กเกจ net/http/pprof และ runtime/pprof เปิดเผยข้อมูลการสร้างโพรไฟล์ที่แสดงว่าโปรแกรมใช้เวลา CPU ไปที่ใด ส่วน CLI go tool pprof ใช้วิเคราะห์โพรไฟล์

ปลายทาง pprof ของ HTTP

นำเข้า _ "net/http/pprof" เพื่อลงทะเบียนปลายทางการสร้างโพรไฟล์ภายใต้ /debug/pprof/ บนเซิร์ฟเวอร์ HTTP ที่มีอยู่

import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe(":6060", nil))
}()

การเก็บโพรไฟล์ CPU

เก็บโพรไฟล์ CPU เป็นเวลา 30 วินาทีผ่านปลายทาง HTTP:

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

การสร้างโพรไฟล์ CPU แบบใช้ไฟล์

สำหรับโปรแกรมที่ไม่มีเซิร์ฟเวอร์ HTTP ให้ใช้ runtime/pprof เพื่อเขียนโพรไฟล์ลงไฟล์:

f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// run workload

การสร้างโพรไฟล์ในการทดสอบ

เรียกใช้การทดสอบด้วยแฟล็ก -cpuprofile และ -memprofile เพื่อสร้างโพรไฟล์ภายใต้ภาระงานทดสอบที่ใกล้เคียงการใช้งานจริง:

go test -cpuprofile cpu.prof -memprofile mem.prof -bench=. ./...

โหมดโต้ตอบของ go tool pprof

เปิดโพรไฟล์และสำรวจด้วยคำสั่งโต้ตอบ:

go tool pprof cpu.prof
(pprof) top        # top functions by CPU time
(pprof) list main  # annotated source
(pprof) web        # call graph in browser

กราฟเปลวไฟ

สร้างกราฟเปลวไฟ (ต้องใช้ graphviz) ด้วย -http=:8080 เพื่อเปิดส่วนติดต่อผู้ใช้บนเว็บแบบโต้ตอบ:

go tool pprof -http=:8080 cpu.prof

การตีความผลลัพธ์ของ top

top แสดงฟังก์ชันเรียงตามเวลาเฉพาะตัว (เวลาที่ใช้ในฟังก์ชันนั้น) และเวลาสะสม (รวมเวลาของฟังก์ชันที่ถูกเรียก) ให้มุ่งเน้นฟังก์ชันที่มีเวลาเฉพาะตัวสูงเพื่อค้นหาโอกาสในการปรับปรุงโดยตรง

โพรไฟล์ Goroutine

ปลายทาง /debug/pprof/goroutine แสดงร่องรอยสแตกของ Goroutine ทั้งหมด ใช้เพื่อตรวจหาการรั่วไหลของ Goroutine หรือ Goroutine ที่ถูกบล็อก

go tool pprof http://localhost:6060/debug/pprof/goroutine

การสร้างโพรไฟล์อย่างต่อเนื่อง

สำหรับระบบที่ใช้งานจริง ให้ใช้บริการสร้างโพรไฟล์อย่างต่อเนื่อง (Pyroscope, Datadog, Google Cloud Profiler) เพื่อเก็บโพรไฟล์โดยไม่ต้องหยุดบริการ

pprof ใน CI

เปรียบเทียบโพรไฟล์จากโค้ดสองเวอร์ชันเพื่อตรวจหาประสิทธิภาพที่ถดถอยก่อนที่ปัญหาจะไปถึงระบบที่ใช้งานจริง

ตรวจสอบความเข้าใจ

คอลัมน์ "self" ในผลลัพธ์ top ของ pprof แสดงถึงอะไร

สรุป: การสร้างโพรไฟล์ CPU ด้วย pprof

ประเด็นสำคัญ:

  • นำเข้า net/http/pprof สำหรับปลายทาง HTTP และ runtime/pprof สำหรับไฟล์
  • ใช้ go tool pprof -http=:8080 เพื่อเปิดส่วนติดต่อผู้ใช้แบบกราฟเปลวไฟ
  • top: เวลาเฉพาะตัว = ต้นทุนโดยตรง; เวลาสะสม = ต้นทุนทั้งหมดรวมฟังก์ชันที่ถูกเรียก
  • ใช้ go test -cpuprofile สำหรับการสร้างโพรไฟล์การวัดประสิทธิภาพ

คำถามที่พบบ่อย

บทเรียน “การทำโปรไฟล์ CPU ด้วย pprof” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำโปรไฟล์ CPU ด้วย pprof” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำโปรไฟล์ CPU ด้วย pprof”

เก็บรวบรวมและแสดงภาพโปรไฟล์ CPU คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำโปรไฟล์ CPU ด้วย pprof” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเขียนการทดสอบประสิทธิภาพด้วย testing.B
  2. การทำโปรไฟล์ CPU ด้วย pprof
  3. การทำโปรไฟล์ฮีปและการจัดสรรหน่วยความจำ
  4. การติดตามการทำงาน
← กลับไปที่ Go Academy