| 
									
										
										
										
											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. |