Middle
Чӣ тавр профили стандартиро дар барномаи Go-и худ дохил кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
แพ็กเกจ net/http/pprof ให้ตัวจัดการ HTTP สำหรับข้อมูลโปรไฟล์
นำเข้า:
import (
"net/http"
_ "net/http/pprof" // สำคัญที่ต้องใช้ '_' สำหรับการเริ่มต้นด้วยผลกระทบด้านข้าง
)
เริ่มเซิร์ฟเวอร์ HTTP ใน goroutine แยก:
go func() {
// เริ่มเซิร์ฟเวอร์บนที่อยู่ localhost และพอร์ต pprof มาตรฐาน
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// จัดการข้อผิดพลาดในการเริ่มเซิร์ฟเวอร์ เช่น การบันทึก
// log.Printf("เซิร์ฟเวอร์ pprof ล้มเหลว: %v", err)
}
}()
ตอนนี้คุณสามารถเข้าถึงข้อมูลโปรไฟล์บน URL http://localhost:6060/debug/pprof/ ได้
จุดสิ้นสุดหลักที่สามารถเข้าถึงได้:
/debug/pprof/: หน้าแรกพร้อมรายการโปรไฟล์ที่มี/debug/pprof/heap: โปรไฟล์ heap/debug/pprof/goroutine: โปรไฟล์ goroutine ที่ใช้งานอยู่/debug/pprof/block: โปรไฟล์บล็อก/debug/pprof/threadcreate: โปรไฟล์การสร้างเธรดของ OS/debug/pprof/cmdline: บรรทัดคำสั่งของแอปพลิเคชัน/debug/pprof/profile: โปรไฟล์ CPU (โดยค่าเริ่มต้นจะเก็บข้อมูลเป็นเวลา 30 วินาที)/debug/pprof/trace: โปรไฟล์การติดตามการทำงาน (โดยค่าเริ่มต้นจะเก็บข้อมูลเป็นเวลา 1 วินาที)
สำหรับการวิเคราะห์โปรไฟล์ CPU, heap และบล็อกมักจะใช้เครื่องมือ go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # โปรไฟล์ CPU เป็นเวลา 30 วินาที
go tool pprof http://localhost:6060/debug/pprof/heap # โปรไฟล์ heap
สำหรับการวิเคราะห์การติดตามการทำงานจะใช้เครื่องมือ go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
สำคัญ: คำนึงถึงความปลอดภัยและอย่าเปิดพอร์ต pprof ให้สาธารณะโดยไม่มีการอนุญาตในสภาพแวดล้อมการผลิต