本文档介绍了如何获取 AlloyDB Omni 操作器的内存堆快照,以帮助诊断和调试潜在的内存问题。请按照以下步骤获取内存堆以进行分析:
确定要分析的 AlloyDB Omni 操作器部署。AlloyDB Omni 操作器包含两个部署,您可以分析任一部署的内存堆。如需识别这两个部署,请运行以下命令:
kubectl get deployment -n alloydb-omni-system
输出结果会显示
alloydb-omni-system
命名空间中的两个部署:fleet-controller-manager
local-controller-manager
您可以获取任一部署的内存堆。出于演示目的,以下步骤展示了如何获取
local-controller-manager
部署的内存堆。通过指定要使用的可用端口来开启内存分析。指定端口后,Pod 会重启。如需指定可用端口,请在部署中使用
pprof-address
参数:运行以下命令,在文本编辑器中打开部署:
kubectl edit -n alloydb-omni-system deploy local-controller-manager
在模板
spec
的container
部分的args
中指定端口:apiVersion: apps/v1 kind: Deployment spec: ... template: ... spec: containers: - args - --pprof-address=:PORT
保存部署文件。保存部署文件后,Pod 会重启。
等待 Pod 重启,然后再继续执行下一步。
如需确保 Pod 已重启,请运行以下命令:
kubectl get pod -n alloydb-omni-system
验证 Pod 的
STATUS
列中的输出值是否为Running
,其AGE
列中的输出值是否为较短的时长。例如,如果STATUS
列为Running
,并且AGE
列中的值为50s
,则表示 Pod 在重启后运行了 50 秒。使用以下命令开启端口转发:
kubectl port-forward -n alloydb-omni-system DEPLOYMENT_POD_NAME PORT:PORT
将 DEPLOYMENT_POD_NAME 替换为部署的名称,该名称会显示在以下命令输出的
NAME
列中:kubectl get pod -n alloydb-omni-system
在另一个终端中,运行以下命令以创建一个包含部署的内存堆快照的文件:
curl http://localhost:PORT/debug/pprof/heap > heap.out
保存
heap.out
文件,并使用该文件查看您选择进行分析的 AlloyDB Omni 操作器部署的内存堆。从部署中移除包含您所用端口的
pprof-address
参数,以关闭内存分析:在文本编辑器中打开部署:
kubectl edit -n alloydb-omni-system deploy local-controller-manager
从模板
spec
的container
部分的args
中移除您之前添加的端口--pprof-address=:PORT
行。