2016-06-28 14 views
1

JMX로 Cassandra 데이터베이스를 모니터링하는 간단한 Java 코드를 작성하고 싶습니다. 이제는 데이터베이스의 CPU 사용량을 검색해야합니다. 가능한 한 MBean이 ProcessCpuLoadjava.lang:type=OperatingSystem이 될 것입니다.JMX/MBeans로 Cassandra CPU 사용량 모니터링

그러나이 경우 결과는 Cassandra 스레드뿐만 아니라 JVM에서 실행중인 모든 프로세스의 CPU 사용량이되는 것 같습니다. 이 가정이 맞습니까?

JConsole을 데이터베이스에 연결할 때 어떤 데이터가 CPU 사용으로 표시되는지 궁금합니다. 이 값에 직접 액세스 할 수 있습니까 (JConsole을 사용하지 않고)? 또는 정확히 원하는 값을 제공하는 또 다른 Mbean이 있습니까?

감사는 OS의 MBean 내의 니코

답변

2

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