跳到主要内容

调试 RabbitMQ Kubernetes 运算符

本文介绍如何调试 RabbitMQ Kubernetes 运算符的运行实例。

检索 Kubernetes 运算符 Pod 的 CPU/内存使用信息

重要提示: 请勿在生产系统上完成以下步骤。

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

例如,如果您发现其中一个运算符 Pod 的资源消耗很高,您可能需要这样做。要使用 pprof 工具,请完成以下步骤启用它

  1. 通过运行以下命令,在您要从中检索调试信息的运算符上启用 ENABLE_DEBUG_PPROF 变量。例如,对于集群运算符,运行
$ 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 操作,以便可以从运算符 Pod 上的正确端口在您的机器上收集指标。对于 RabbitMQ 集群运算符,默认端口是 9782,对于所有其他运算符,端口是 8080。例如,要在 RabbitMQ 集群运算符 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 来分析运算符 Pod 的性能。例如,要分析 Pod 中的内存分配,请运行
$ go tool pprof "localhost:9782/debug/pprof/heap"
Fetching profile over HTTP from http://localhost:9782/debug/pprof/heap
Saved profile in /home/pprof/pprof.manager.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz

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

下表列出了运算符公开的配置文件。

路径配置文件描述
/debug/pprof系统上所有可用配置文件的列表。
/debug/pprof/allocs所有过去内存分配的样本。
/debug/pprof/block导致同步原语阻塞的堆栈跟踪。
/debug/pprof/cmdline当前程序的命令行调用。
/debug/pprof/goroutine所有当前 goroutine 的堆栈跟踪。
/debug/pprof/heap活动对象的内存分配样本。您可以指定 gc GET 参数以在获取堆样本之前运行 GC。例如:/debug/pprof/heap?gc=1
/debug/pprof/mutex持有争用互斥锁的持有者的堆栈跟踪。
/debug/pprof/profileCPU 性能分析文件。您可以以 seconds GET 参数指定持续时间。例如:/debug/pprof/profile?seconds=5
/debug/pprof/threadcreate导致创建新操作系统线程的堆栈跟踪。
/debug/pprof/trace当前程序执行的跟踪。您可以以 seconds GET 参数指定持续时间。例如:/debug/pprof/trace?seconds=5
© . All rights reserved.