使用JMX / MBean监视Cassandra CPU使用情况

时间:2016-06-28 14:44:29

标签: java cassandra cpu-usage jmx mbeans

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

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

我还想知道在将JConsole连接到数据库时,哪些数据显示为CPU使用率。是否可以直接访问这些值(我的意思是没有JConsole)?或者是否有另一个Mbean可以提供所需的值?

谢谢, 尼科

1 个答案:

答案 0 :(得分:2)

OS mbean中的

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