diff options
Diffstat (limited to 'devdocs/go/net%2Fhttp%2Fpprof%2Findex.html')
| -rw-r--r-- | devdocs/go/net%2Fhttp%2Fpprof%2Findex.html | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/devdocs/go/net%2Fhttp%2Fpprof%2Findex.html b/devdocs/go/net%2Fhttp%2Fpprof%2Findex.html new file mode 100644 index 00000000..552a61c3 --- /dev/null +++ b/devdocs/go/net%2Fhttp%2Fpprof%2Findex.html @@ -0,0 +1,48 @@ +<h1> Package pprof </h1> <ul id="short-nav"> +<li><code>import "net/http/pprof"</code></li> +<li><a href="#pkg-overview" class="overviewLink">Overview</a></li> +<li><a href="#pkg-index" class="indexLink">Index</a></li> +</ul> <h2 id="pkg-overview">Overview </h2> <p>Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool. </p> +<p>The package is typically only imported for the side effect of registering its HTTP handlers. The handled paths all begin with /debug/pprof/. </p> +<p>To use pprof, link this package into your program: </p> +<pre data-language="go">import _ "net/http/pprof" +</pre> <p>If your application is not already running an http server, you need to start one. Add "net/http" and "log" to your imports and the following code to your main function: </p> +<pre data-language="go">go func() { + log.Println(http.ListenAndServe("localhost:6060", nil)) +}() +</pre> <p>By default, all the profiles listed in <span>runtime/pprof.Profile</span> are available (via <a href="#Handler">Handler</a>), in addition to the <a href="#Cmdline">Cmdline</a>, <a href="#Profile">Profile</a>, <a href="#Symbol">Symbol</a>, and <a href="#Trace">Trace</a> profiles defined in this package. If you are not using DefaultServeMux, you will have to register handlers with the mux you are using. </p> +<h3 id="hdr-Parameters">Parameters</h3> <p>Parameters can be passed via GET query params: </p> +<ul> <li>debug=N (all profiles): response format: N = 0: binary (default), N > 0: plaintext </li> +<li>gc=N (heap profile): N > 0: run a garbage collection cycle before profiling </li> +<li>seconds=N (allocs, block, goroutine, heap, mutex, threadcreate profiles): return a delta profile </li> +<li>seconds=N (cpu (profile), trace profiles): profile for the given duration </li> +</ul> <h3 id="hdr-Usage_examples">Usage examples</h3> <p>Use the pprof tool to look at the heap profile: </p> +<pre data-language="go">go tool pprof http://localhost:6060/debug/pprof/heap +</pre> <p>Or to look at a 30-second CPU profile: </p> +<pre data-language="go">go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30 +</pre> <p>Or to look at the goroutine blocking profile, after calling <span>runtime.SetBlockProfileRate</span> in your program: </p> +<pre data-language="go">go tool pprof http://localhost:6060/debug/pprof/block +</pre> <p>Or to look at the holders of contended mutexes, after calling <span>runtime.SetMutexProfileFraction</span> in your program: </p> +<pre data-language="go">go tool pprof http://localhost:6060/debug/pprof/mutex +</pre> <p>The package also exports a handler that serves execution trace data for the "go tool trace" command. To collect a 5-second execution trace: </p> +<pre data-language="go">curl -o trace.out http://localhost:6060/debug/pprof/trace?seconds=5 +go tool trace trace.out +</pre> <p>To view all available profiles, open <span>http://localhost:6060/debug/pprof/</span> in your browser. </p> +<p>For a study of the facility in action, visit <a href="https://blog.golang.org/2011/06/profiling-go-programs.html">https://blog.golang.org/2011/06/profiling-go-programs.html</a>. </p> <h2 id="pkg-index">Index </h2> <ul id="manual-nav"> +<li><a href="#Cmdline">func Cmdline(w http.ResponseWriter, r *http.Request)</a></li> +<li><a href="#Handler">func Handler(name string) http.Handler</a></li> +<li><a href="#Index">func Index(w http.ResponseWriter, r *http.Request)</a></li> +<li><a href="#Profile">func Profile(w http.ResponseWriter, r *http.Request)</a></li> +<li><a href="#Symbol">func Symbol(w http.ResponseWriter, r *http.Request)</a></li> +<li><a href="#Trace">func Trace(w http.ResponseWriter, r *http.Request)</a></li> +</ul> <h3>Package files</h3> <p> <span>pprof.go</span> </p> <h2 id="Cmdline">func <span>Cmdline</span> </h2> <pre data-language="go">func Cmdline(w http.ResponseWriter, r *http.Request)</pre> <p>Cmdline responds with the running program's command line, with arguments separated by NUL bytes. The package initialization registers it as /debug/pprof/cmdline. </p> +<h2 id="Handler">func <span>Handler</span> </h2> <pre data-language="go">func Handler(name string) http.Handler</pre> <p>Handler returns an HTTP handler that serves the named profile. Available profiles can be found in <span>runtime/pprof.Profile</span>. </p> +<h2 id="Index">func <span>Index</span> </h2> <pre data-language="go">func Index(w http.ResponseWriter, r *http.Request)</pre> <p>Index responds with the pprof-formatted profile named by the request. For example, "/debug/pprof/heap" serves the "heap" profile. Index responds to a request for "/debug/pprof/" with an HTML page listing the available profiles. </p> +<h2 id="Profile">func <span>Profile</span> </h2> <pre data-language="go">func Profile(w http.ResponseWriter, r *http.Request)</pre> <p>Profile responds with the pprof-formatted cpu profile. Profiling lasts for duration specified in seconds GET parameter, or for 30 seconds if not specified. The package initialization registers it as /debug/pprof/profile. </p> +<h2 id="Symbol">func <span>Symbol</span> </h2> <pre data-language="go">func Symbol(w http.ResponseWriter, r *http.Request)</pre> <p>Symbol looks up the program counters listed in the request, responding with a table mapping program counters to function names. The package initialization registers it as /debug/pprof/symbol. </p> +<h2 id="Trace">func <span>Trace</span> <span title="Added in Go 1.5">1.5</span> </h2> <pre data-language="go">func Trace(w http.ResponseWriter, r *http.Request)</pre> <p>Trace responds with the execution trace in binary form. Tracing lasts for duration specified in seconds GET parameter, or for 1 second if not specified. The package initialization registers it as /debug/pprof/trace. </p><div class="_attribution"> + <p class="_attribution-p"> + © Google, Inc.<br>Licensed under the Creative Commons Attribution License 3.0.<br> + <a href="http://golang.org/pkg/net/http/pprof/" class="_attribution-link">http://golang.org/pkg/net/http/pprof/</a> + </p> +</div> |
