Skip to content

Commit

Permalink
Add guide for pprof endpoints
Browse files Browse the repository at this point in the history
Signed-off-by: Hidde Beydals <hello@hidde.co>
  • Loading branch information
hiddeco committed Feb 8, 2021
1 parent 34edbf4 commit c24c88d
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions docs/dev-guides/debugging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Advanced debugging

This guide covers more advanced debugging topics such as collecting
runtime profiling data from GitOps Toolkit components.

As a user, this page normally should be a last resort, but you may
be asked by a maintainer to share a [collected profile](#collecting-a-profile)
to debug e.g. performance issues.

## Pprof

The [GitOps Toolkit components](../components/index.md) serve [`pprof`](https://golang.org/pkg/net/http/pprof/)
runtime profiling data on their metrics HTTP server (default `:8080`).

### Endpoints

| | Path |
|-------------|------------------------|
| Index | `/debug/pprof/` |
| CPU profile | `/debug/pprof/profile` |
| Symbol | `/debug/pprof/symbol` |
| Trace | `/debug/pprof/trace` |

### Collecting a profile

To collect a profile, port-forward to the component's metrics endpoint and
collect the data from the [endpoint](#endpoints) of choice:

```console
$ kubectl port-forward -n <namespace> deploy/<component> 8080
$ curl -Sk -v http://localhost:8080/debug/pprof/heap > heap.out
```

The collected profile [can be analyzed using `go`](https://blog.golang.org/pprof),
or shared with one of the maintainers.

0 comments on commit c24c88d

Please sign in to comment.