2016-06-28 2 views
1

Я хочу написать простой Java-код для мониторинга базы данных Cassandra с помощью JMX. Теперь я зациклился на извлечении загрузки базы данных в ЦП. Насколько я понял, возможным MBean будет java.lang:type=OperatingSystem с атрибутом ProcessCpuLoad.Мониторинг использования CPU Cassandra с JMX/MBeans

Однако, похоже, в этом случае результатом будет использование ЦП всех процессов, запущенных в JVM, а не только потоков Cassandra. Правильно ли это предположение?

Мне также интересно, какие данные отображаются как использование ЦП при подключении к JConsole к базе данных. Можно ли получить прямой доступ к этим значениям (я имею в виду без JConsole)? Или есть еще одна Mbean, которая дает точно нужные значения?

Спасибо, Нико

ответ

2

ProcessCpuLoad в MBean OS правильно. Это не все JVM, а только один JVM, который сообщает об этом. У вас нет нескольких процессов, работающих в одной JVM, JVM работает как один процесс для каждого приложения Java.

Вы можете использовать java.lang:type=Threading, чтобы контролировать время процессора, затрачиваемое на отдельные потоки, но есть тонна потоков в Кассандре, и это, вероятно, никогда не будет абсолютно правильным (пропустите такие вещи, как время 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 
Смежные вопросы