Sobes.tech
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 ให้สาธารณะโดยไม่มีการอนุญาตในสภาพแวดล้อมการผลิต