Heim > Artikel > Backend-Entwicklung > Warum erzeugt mein pprof-Tool eine falsche Ausgabe für meine Golang-Anwendung?
pprof-Tool funktioniert nicht in Golang
Obwohl das pprof-Tool zuvor effektiv funktionierte, hat es sich abrupt verschlechtert und erzeugt unabhängig vom Profilierungsziel eine fehlerhafte Ausgabe. Dieses Problem betrifft sowohl die CPU- als auch die Memprofilierung und erzeugt Callgraphs, die im Verhältnis zur Komplexität der profilierten Anwendungen unverhältnismäßig unfruchtbar sind.
Die betroffenen Webanwendungen funktionieren angemessen, empfangen Millionen von Anfragen und generieren entsprechende Antworten. Das Problem trat vor ein paar Tagen plötzlich unter macOS Yosemite auf und blieb auch nach einem Upgrade auf El Capitan bestehen.
Die betreffende Anwendung importiert das Paket „github.com/davecheney/profile“ und initiiert die Profilerstellung innerhalb der Hauptfunktion durch „defer profile.Start(profile.MemProfile).Stop().“ Allerdings scheint das pprof-Tool eine Fehlfunktion zu haben, wenn es wie folgt aufgerufen wird:
go tool pprof /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof
Bei diesem Aufruf wird die Binärdatei weggelassen, die profiliert wurde. Um dieses Problem zu beheben, sollte das Tool wie folgt aufgerufen werden:
go tool pprof ./orig /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof
wobei „orig“ die Binärdatei darstellt, die mit aktivierter Profilerstellung erstellt wurde. Durch diese Änderung sollte die vorherige Funktionalität des pprof-Tools wiederhergestellt werden.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein pprof-Tool eine falsche Ausgabe für meine Golang-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!