使用 JMX/MBeans 监控 Cassandra CPU 使用情况

Monitoring Cassandra CPU usage with JMX/MBeans

我想编写一个简单的 Java 代码来使用 JMX 监控 Cassandra 数据库。现在我一直在检索数据库的 CPU 使用情况。据我所知,一个可能的 MBean 是具有属性 ProcessCpuLoad.

java.lang:type=OperatingSystem

但是,在这种情况下,结果似乎是 CPU 使用 JVM 中的所有进程 运行,而不仅仅是 Cassandra 线程。这个假设是否正确?

我还想知道在使用 JConsole 连接到数据库时 CPU 使用情况显示的是什么数据。是否可以直接访问这些值(我的意思是没有 JConsole)?或者是否有另一个 Mbean 可以准确给出所需的值?

谢谢, 妮可

ProcessCpuLoad 在 OS mbean 中是正确的。它不是所有的 JVM,只是报告它的一个 JVM。您在单个 JVM 中没有多个进程 运行,JVM 作为每个 java 应用程序的单个进程运行。

您可以使用 java.lang:type=Threading 来监控花费在单个线程上的 cpu 时间,但 Cassandra 中有大量线程,它可能永远不会完全正确(错过诸如 GC 时间之类的东西)。

如果不想使用 jconsole,您可以查看:

ps -p <whatever-your-cassandra-pid-is> -o %cpu

# or depending on OS/installer 

ps -p `cat /var/run/cassandra.pid` -o %cpu