如何傾印 Envoy 的堆積記憶體配置檔?
如果使用的 Envoy 二進位檔是使用 gperftools
建置的,請查看 PPROF.md,以了解如何產生 Envoy 的堆積記憶體配置檔。
對於任何使用一般 tcmalloc
建置的 Envoy 二進位檔,都支援 /heap_dump 端點來傾印 Envoy 目前的堆積記憶體配置檔。
以下列 Envoy 處理程序作為具體範例
$ /path/to/envoy -c /path/to/config.yaml --concurrency 2
您可以使用以下指令取得 Envoy 的堆積記憶體配置檔
$ curl <Envoy IP>:<Envoy Admin Port>/heap_dump -o /heap/output/envoy.heap
然後您可以使用 pprof 分析輸出的堆積記憶體配置檔
$ pprof -http localhost:9999 /heap/output/envoy.heap
注意
如果您在生產環境中傾印堆積記憶體配置檔,並在本地環境中分析它,請確保您的本地環境中存在 Envoy 二進位檔,且本地二進位檔的路徑與生產環境中的二進位檔相同。並請確保用於分析堆積記憶體配置檔的 Envoy 二進位檔是帶有函數符號的二進位檔(非剝離二進位檔)。
您也可以從兩個不同的堆積記憶體配置檔中取得堆積差異
$ 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