Allows run-time configuration of Go's pprof features and default HTTP mux using the environment variable GOPPROF. Import the package with import _ "github.com/anacrolix/envpprof". envpprof has an init function that will run at process initialization that checks the value of the GOPPROF environment variable. The variable can contain a comma-separated list of values, for example GOPPROF=http,block. The supported keys are:
Key
Effect
http
Exposes the default HTTP muxer "net/http".DefaultServeMux to the first free TCP port after 6060 on localhost. The process PID, and location are logged automatically when this is enabled. DefaultServeMux is frequently the default location to expose status, and debugging endpoints, including those provided by net/http/pprof. Note that the net/http/pprof import is included with envpprof, and exposed on DefaultServeMux.
cpu
Calls "runtime/pprof".StartCPUProfile, writing to a temporary file in $HOME/pprof with the prefix cpu. The file is not removed after use. The name of the file is logged when this is enabled. envpprof.Stop should be deferred from main when this will be used, to ensure proper clean up.
heap
This is similar to the cpu key, but writes heap profile information to a file prefixed with heap. The profile will not be written unless Stop is invoked. See cpu for more.
block
This calls "runtime".SetBlockProfileRate(1) enabling the profiling of goroutine blocking events. Note that if http is enabled, this exposes the blocking profile at the HTTP path /debug/pprof/block per package net/http/pprof.
mutex
This calls "runtime".SetMutexProfileFraction(1) enabling profiling of mutex contention events. Note that if http is enabled, this exposes the profile at the HTTP path /debug/pprof/mutex per package net/http/pprof.
Stop ends CPU profiling, waiting for writes to complete. If heap profiling is enabled, it also
writes the heap profile to a file. Stop should be deferred from main if cpu or heap profiling
are to be used through envpprof.