Heim > Backend-Entwicklung > Golang > Beherrschen Sie die Verwendung von pprof in Go vollständig

Beherrschen Sie die Verwendung von pprof in Go vollständig

Freigeben: 2019-11-25 13:41:21
nach vorne
4326 Leute haben es durchsucht

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)) 
}()
Nach dem Login kopieren

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()
    }
…
Nach dem Login kopieren

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:

Beherrschen Sie die Verwendung von pprof in Go vollständig

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

Beherrschen Sie die Verwendung von pprof in Go vollständig

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
Nach dem Login kopieren

(pprof)web

Beherrschen Sie die Verwendung von pprof in Go vollständig

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage