【问题标题】:Monitoring Cassandra CPU usage with JMX/MBeans使用 JMX/MBeans 监控 Cassandra CPU 使用率
【发布时间】:2016-06-28 14:44:28
【问题描述】:
我想编写一个简单的 Java 代码来使用 JMX 监控 Cassandra 数据库。现在我坚持检索数据库的 CPU 使用率。据我所知,可能的 MBean 是 java.lang:type=OperatingSystem 属性为 ProcessCpuLoad。
但是,在这种情况下,结果似乎是 JVM 中运行的所有进程的 CPU 使用率,而不仅仅是 Cassandra 线程。这个假设正确吗?
我还想知道当使用 JConsole 连接到数据库时,哪些数据会显示为 CPU 使用率。是否可以直接访问这些值(我的意思是没有 JConsole)?或者是否有另一个 Mbean 可以提供完全期望的值?
谢谢,
妮可
【问题讨论】:
标签:
java
cassandra
cpu-usage
jmx
mbeans
【解决方案1】:
操作系统 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