2016-06-28 25 views
1

JMXを使用してCassandraデータベースを監視するための簡単なJavaコードを作成します。今はデータベースのCPU使用率を取得することに悩まされています。可能なMBeanは、ProcessCpuLoadという属性を持つjava.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 
関連する問題