How to dump heap profile of Envoy?

If Envoy binary that build with gperftools is used, please check PPROF.md for how to generate Envoy heap profiles.

For any Envoy binary that build with normal tcmalloc, the /heap_dump endpoint is supported to dump current heap profile of Envoy.

Use following Envoy process as a specific example:

$ /path/to/envoy -c /path/to/config.yaml --concurrency 2

You can get a heap profile of Envoy by the following command:

$ curl <Envoy IP>:<Envoy Admin Port>/heap_dump -o /heap/output/envoy.heap

And then you can analyze the outputted heap profile with pprof:

$ pprof -http:localhost:9999 /heap/output/envoy.heap

Note

If you dump the heap profile in the production environment and analyze it in the local environment, please ensure there is a Envoy binary in your local environment and the local’s binary has same path with the production’s one. And please ensure that the Envoy binary that used to analyze heap profile is a binary with function symbol (no stripped binary).

You can also get heap diff from two different heap profiles:

$ pprof -http:localhost:9999 /heap/output/envoy_1.heap
$ sleep 30
$ pprof -http:localhost:9999 /heap/output/envoy_2.heap
$ pprof -http:localhost:9999 -base /heap/output/envoy_1.heap /heap/output/envoy_2.heap