Go pprof Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 16: Line 16:


==Dump Goroutines==
==Dump Goroutines==
This command dumps the [[Go_pprof_Concepts#goroutine|<code>goroutine</code> profile]].
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
curl -k https://localhost:<http-port>/debug/pprof/goroutine?debug=2 > ~/tmp/goroutine-profile.txt
curl -k https://localhost:<http-port>/debug/pprof/goroutine?debug=2 > ~/tmp/goroutine-profile.txt

Revision as of 03:43, 16 November 2024

Internal

Make Sure an Executable Starts with the Profiling Subsystem Enabled

TODO

Connect with a Browser to an Executable that Has the Profiling Subsystem Enabled

Go to https://127.0.0.1:8443/debug/pprof/

If the process has TLS enabled, see TLS and Certificates for suggestions on how to address the issue.

Dump Profiles in Text Format

Once a Go executable is started with the profiling subsystem enabled, you can use curl to connect to the embedded web server and dump various profiles.

Dump Goroutines

This command dumps the goroutine profile.

curl -k https://localhost:<http-port>/debug/pprof/goroutine?debug=2 > ~/tmp/goroutine-profile.txt

TLS and Certificates

Profile a Running Process

Assuming that your local 127.0.0.1 address is aliased to "localhost.somedomain.com" in /etc/hosts and the certificates are issued for "localhost.somedomain.com", set CERT_PATH to the directory that contains and and:

export CERT_PATH=/Users/ovidiu/some-project/config
go tool pprof -http 127.0.0.1:8080 -tls_cert ${CERT_PATH}/localhost.somedomain.com.chain.pem -tls_key ${CERT_PATH}/localhost.somedomain.com.key.pem https://localhost.somedomain.com:8443