Heim >Backend-Entwicklung >Golang >Beherrschen Sie die Verwendung von pprof in Go vollständig
go hat das pprof-Paket zur Code-Leistungsüberwachung. Es gibt Pakete an zwei Orten:
net/http/pprof
runtime/pprof
Tatsächlich verwendet net/http/pprof lediglich das runtime/pprof-Paket, um es zu kapseln und auf dem http-Port verfügbar zu machen
pprof-Paket
Webserver
Wenn Ihr Go-Programm ein Webserver ist, der mit dem http-Paket gestartet wurde, möchten Sie den Status Ihres Webservers überprüfen. Zu diesem Zeitpunkt können Sie net/http/pprof auswählen. Sie müssen nur das Paket „net/http/pprof“ importieren.
Anschließend können Sie http://localhost:port/debug/pprof/ im Browser verwenden, um direkt den Status des aktuellen Webdienstes anzuzeigen, einschließlich CPU-Auslastung und Speichernutzung. Informationen zur spezifischen Verwendung finden Sie in den Anweisungen von Godoc.
Serviceprozess
Wenn Ihr Go-Programm kein Webserver, sondern ein Serviceprozess ist, können Sie auch das Paket net/http/pprof verwenden. Das ist auch das Paket net/http/pprof, und öffnen Sie dann eine andere Goroutine, um die Portüberwachung zu aktivieren.
Zum Beispiel:
go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }()
Anwendung
Wenn Ihr Go-Programm nur eine Anwendung ist, z. B. die Berechnung der Fabonacci-Folge, können Sie net nicht verwenden /http/pprof-Paket, Sie müssen runtime/pprof verwenden. Die spezifische Methode besteht darin, pprof.StartCPUProfile und pprof.StopCPUProfile zu verwenden. Zum Beispiel das folgende Beispiel:
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") func main() { flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } …
Fügen Sie beim Ausführen des Programms einen --cpuprofile-Parameter hinzu, z. B. fabonacci --cpuprofile=fabonacci.prof
Auf diese Weise werden die CPU-Informationen angezeigt, wenn die Das laufende Programm wird aufgezeichnet. XXX.prof wird aufgerufen.
Im nächsten Schritt können Sie diese Profi-Informationen verwenden, um Leistungsanalysediagramme zu erstellen (graphviz muss installiert sein).
Verwenden Sie das Go-Tool pprof (Anwendung) (Anwendungs-Prof-Datei)
Geben Sie pprof ein, verwenden Sie den Web-Befehl, um die SVG-Datei unter /tmp zu generieren. Die SVG-Datei kann durchsucht und unter dem Gerät angezeigt werden . So:
Wenn Ihr Programm beispielsweise sehr einfach ist und nur eine println-Anweisung vorhanden ist, können Sie mit pprof.StartCPUProfile nichts drucken.
Beispiel
Nehmen wir go-tour als Beispiel. Dies ist ein Webprogramm, das ich
_ „net/http /pprof“ hinzugefügt habe.
Ich kann die Prof-Informationen direkt im Browser anzeigen
CPU-Statusanalysediagramm erstellen
Als nächstes gehen wir Sie möchten ein CPU-Statusanalysediagramm erstellen. Rufen Sie das Go-Tool pprof http://localhost:3999/debug/pprof/profile
auf und es wird die 30-Sekunden-Profilerfassungszeit eingegeben. Aktualisieren Sie die Seite im Go-Tour-Browser und versuchen Sie, die CPU zum Generieren von Daten zu nutzen.
(pprof) top10 Total: 3 samples 1 33.3% 33.3% 1 33.3% MHeap_AllocLocked 1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors 1 33.3% 100.0% 1 33.3% runtime.sigprocmask 0 0.0% 100.0% 1 33.3% MCentral_Grow 0 0.0% 100.0% 2 66.7% main.Compile 0 0.0% 100.0% 2 66.7% main.compile 0 0.0% 100.0% 2 66.7% main.run 0 0.0% 100.0% 1 33.3% makeslice1 0 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP 0 0.0% 100.0% 2 66.7% net/http.(*conn).serve
(pprof)web
Für weitere Go-Sprachkenntnisse beachten Sie bitte die Spalte Go-Sprach-Tutorial.
Das obige ist der detaillierte Inhalt vonBeherrschen Sie die Verwendung von pprof in Go vollständig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!