Go pprof Operations: Difference between revisions
Jump to navigation
Jump to search
Line 17: | Line 17: | ||
The general syntax of the command is: | The general syntax of the command is: | ||
<syntaxhighlight lang='bash'> | <syntaxhighlight lang='bash'> | ||
curl -k https://localhost:<http-port>/debug/pprof/<profile-name>? | curl -k https://localhost:<http-port>/debug/pprof/<profile-name>[?debug=1|2] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 04:05, 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
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.
The general syntax of the command is:
curl -k https://localhost:<http-port>/debug/pprof/<profile-name>[?debug=1|2]
where profile name can be one of goroutine
, heap
, threadcreate
, block
, mutex
.
For example, to dump goroutines:
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