Go pprof Operations: Difference between revisions

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




=Profile a Running Process=
Assuming that your local 127.0.0.1 address is aliased to "localhost.somedomain.com" in <code>/etc/hosts</code> and the certificates are issued for "localhost.somedomain.com", set <code>CERT_PATH</code> to the directory that contains <code></code> and <code></code> and:
<syntaxhighlight lang='bash'>
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
</syntaxhighlight>


=<tt>go tool pprof</tt>=
=<tt>go tool pprof</tt>=

Revision as of 04:15, 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

go tool pprof

go tool pprof is the tool to analyze the profiles collected from the Go process.

The tool can analyze profile collected previously, or it an attach to a live process and start a web server that allows live interaction.

go tool trace