Java 使用JMX/MBeans监视Cassandra CPU使用情况

Java 使用JMX/MBeans监视Cassandra CPU使用情况,java,cassandra,cpu-usage,jmx,mbeans,Java,Cassandra,Cpu Usage,Jmx,Mbeans,我想编写一个简单的Java代码,用JMX监视Cassandra数据库。现在我一直在检索数据库的CPU使用率。据我所知,一个可能的MBean是java.lang:type=OperatingSystem,属性为ProcessCpuLoad 然而,在本例中,结果似乎是JVM中运行的所有进程的CPU使用率,而不仅仅是Cassandra线程。这个假设正确吗 我还想知道,当使用JConsole连接到数据库时,哪些数据显示为CPU使用情况。是否可以直接访问这些值(我的意思是没有JConsole)?或者是否有

我想编写一个简单的Java代码,用JMX监视Cassandra数据库。现在我一直在检索数据库的CPU使用率。据我所知,一个可能的MBean是
java.lang:type=OperatingSystem
,属性为
ProcessCpuLoad

然而,在本例中,结果似乎是JVM中运行的所有进程的CPU使用率,而不仅仅是Cassandra线程。这个假设正确吗

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

谢谢,
操作系统mbean中的Nico

ProcessCpuLoad
是正确的。它不是所有的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
ps-p-o%cpu
#或取决于操作系统/安装程序
ps-p`cat/var/run/cassandra.pid`-o%cpu