2016-04-28 10:26:58 +01:00
|
|
|
# pprof
|
|
|
|
|
|
2018-01-04 12:53:07 +00:00
|
|
|
## Name
|
|
|
|
|
|
|
|
|
|
*pprof* - publishes runtime profiling data at endpoints under `/debug/pprof`.
|
|
|
|
|
|
|
|
|
|
## Description
|
2017-07-24 08:24:53 -07:00
|
|
|
|
|
|
|
|
You can visit `/debug/pprof` on your site for an index of the available endpoints. By default it
|
|
|
|
|
will listen on localhost:6053.
|
2016-04-28 10:26:58 +01:00
|
|
|
|
2018-05-24 07:51:59 +01:00
|
|
|
This is a debugging tool. Certain requests (such as collecting execution traces) can be slow. If
|
|
|
|
|
you use pprof on a live server, consider restricting access or enabling it only temporarily.
|
2016-04-28 10:26:58 +01:00
|
|
|
|
2018-02-28 18:16:05 -08:00
|
|
|
This plugin can only be used once per Server Block.
|
|
|
|
|
|
2016-04-28 10:26:58 +01:00
|
|
|
## Syntax
|
|
|
|
|
|
2019-03-29 12:47:59 +00:00
|
|
|
~~~ txt
|
|
|
|
|
pprof [ADDRESS]
|
2016-04-28 10:26:58 +01:00
|
|
|
~~~
|
2019-03-29 12:47:59 +00:00
|
|
|
|
|
|
|
|
Optionally pprof takes an address; the default is `localhost:6053`.
|
|
|
|
|
|
|
|
|
|
An extra option can be set with this extended syntax:
|
|
|
|
|
|
|
|
|
|
~~~ txt
|
2019-03-29 02:37:17 -04:00
|
|
|
pprof [ADDRESS] {
|
|
|
|
|
block [RATE]
|
|
|
|
|
}
|
2016-04-28 10:26:58 +01:00
|
|
|
~~~
|
|
|
|
|
|
2019-03-29 12:47:59 +00:00
|
|
|
* `block` option enables block profiling, **RATE** defaults to 1. **RATE** must be a positive value.
|
|
|
|
|
See [Diagnostics, chapter profiling](https://golang.org/doc/diagnostics.html) and
|
|
|
|
|
[runtime.SetBlockProfileRate](https://golang.org/pkg/runtime/#SetBlockProfileRate) for what block
|
|
|
|
|
profiling entails.
|
2017-04-24 10:27:26 -04:00
|
|
|
|
2016-04-28 10:26:58 +01:00
|
|
|
## Examples
|
|
|
|
|
|
2019-03-29 12:47:59 +00:00
|
|
|
Enable a pprof endpoint:
|
2016-04-28 10:26:58 +01:00
|
|
|
|
|
|
|
|
~~~
|
2017-10-10 09:39:35 +02:00
|
|
|
. {
|
|
|
|
|
pprof
|
|
|
|
|
}
|
2016-04-28 10:26:58 +01:00
|
|
|
~~~
|
2017-04-24 10:27:26 -04:00
|
|
|
|
2018-04-30 20:53:23 +01:00
|
|
|
And use the pprof tool to get statistics: `go tool pprof http://localhost:6053`.
|
|
|
|
|
|
2017-04-24 10:27:26 -04:00
|
|
|
Listen on an alternate address:
|
|
|
|
|
|
2017-10-10 09:39:35 +02:00
|
|
|
~~~ txt
|
2017-09-15 09:56:05 +01:00
|
|
|
. {
|
|
|
|
|
pprof 10.9.8.7:6060
|
|
|
|
|
}
|
2017-04-24 10:27:26 -04:00
|
|
|
~~~
|
|
|
|
|
|
2019-03-29 12:47:59 +00:00
|
|
|
Listen on an all addresses on port 6060, and enable block profiling
|
2017-04-24 10:27:26 -04:00
|
|
|
|
2017-10-10 09:39:35 +02:00
|
|
|
~~~ txt
|
|
|
|
|
. {
|
2019-03-29 02:37:17 -04:00
|
|
|
pprof :6060 {
|
|
|
|
|
block
|
|
|
|
|
}
|
2017-10-10 09:39:35 +02:00
|
|
|
}
|
2017-04-24 10:27:26 -04:00
|
|
|
~~~
|
2018-01-04 12:53:07 +00:00
|
|
|
|
2020-10-28 18:56:35 +01:00
|
|
|
## See Also
|
2018-01-04 12:53:07 +00:00
|
|
|
|
|
|
|
|
See [Go's pprof documentation](https://golang.org/pkg/net/http/pprof/) and [Profiling Go
|
|
|
|
|
Programs](https://blog.golang.org/profiling-go-programs).
|
2019-03-29 12:47:59 +00:00
|
|
|
|
|
|
|
|
See [runtime.SetBlockProfileRate](https://golang.org/pkg/runtime/#SetBlockProfileRate) for
|
|
|
|
|
background on block profiling.
|