跳至主内容

调试 RabbitMQ Kubernetes Operators

此信息介绍了如何调试正在运行的 RabbitMQ Kubernetes Operators 实例。

检索 Kubernetes Operator Pod 的 CPU/内存使用率信息

警告

以下步骤仅在调试特定部署中的 Operator 时才需要。

在生产系统上运行它们之前请三思。

通过使用 pprof 工具,您可以为 Kubernetes Operator Pod 公开 CPU 和内存分析数据。分析是一种调试技术,通过公开有关软件内存、CPU 和异步消耗的信息来生成有关软件运行方式的数据。

例如,如果您发现某个 Operator Pod 的资源消耗很高,您可能想这样做。要使用 pprof 工具,请通过完成以下步骤启用它

  1. 在您想要从中检索调试信息的 Operator 上启用 ENABLE_DEBUG_PPROF 变量,方法是运行以下命令。例如,对于 Cluster Operator,运行
kubectl -n rabbitmq-system set env deployment/rabbitmq-cluster-operator ENABLE_DEBUG_PPROF=True
# => deployment.apps/rabbitmq-cluster-operator env updated
  1. 使用 kubectl,完成一个 port-forward 操作,以便可以在您的机器上从 Operator Pod 的正确端口收集指标。对于 RabbitMQ Cluster Operator,默认端口是 9782,对于所有其他 Operator,端口是 8080。例如,要在 RabbitMQ Cluster Operator Pod 上完成 port-forward 操作,运行
kubectl -n rabbitmq-system port-forward deployment/rabbitmq-cluster-operator 9782
# => Forwarding from 127.0.0.1:9782 -> 9782
# => Forwarding from [::1]:9782 -> 9782
  1. 在另一个终端中,您现在可以使用 go tool pprof 来分析 Operator Pod。例如,要分析 Pod 中的内存分配,运行
go tool pprof "localhost:9782/debug/pprof/heap"
# => Fetching profile over HTTP from https://:9782/debug/pprof/heap
# => Saved profile in /home/pprof/pprof.manager.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz

这将打开一个浏览器窗口,以可视化配置文件中的内存分配。有关如何使用 pprof 的更多信息,请参阅 此处

下表列出了 Operators 公开的配置文件。

路径配置文件说明
/debug/pprof系统中所有可用配置文件的列表。
/debug/pprof/allocs所有过去内存分配的样本。
/debug/pprof/block导致同步原语阻塞的堆栈跟踪。
/debug/pprof/cmdline当前程序的命令行调用。
/debug/pprof/goroutine所有当前 goroutine 的堆栈跟踪。
/debug/pprof/heap活动对象的内存分配样本。您可以指定 gcGET 参数在获取堆样本之前运行 GC。例如:/debug/pprof/heap?gc=1
/debug/pprof/mutex争用互斥锁持有者的堆栈跟踪。
/debug/pprof/profileCPU 配置文件。您可以在 seconds GET 参数中指定持续时间。例如:/debug/pprof/profile?seconds=5
/debug/pprof/threadcreate导致创建新 OS 线程的堆栈跟踪。
/debug/pprof/trace当前程序执行的跟踪。您可以在 seconds GET 参数中指定持续时间。例如:/debug/pprof/trace?seconds=5
© . This site is unofficial and not affiliated with VMware.