Потоки JBoss - JMX против Java Visual VM - сообщают о разных результатах - Почему? - PullRequest
0 голосов
/ 30 марта 2012

Когда я использую Java VisualVM для мониторинга моего приложения JBoss. Это показываетТекущие темы как: 155Темы демона как: 135

Когда я использую веб-консоль JMX от JBoss. Это показываетТекущие занятые темы как: 40Текущий счетчик тем как: 60

Почему так много различий между тем, что сообщает Java Visual VM, и тем, что показывает JMX Web Console.(Чем живые темы отличаются от занятых)

1 Ответ

1 голос
/ 31 марта 2012

Живой поток - это тот, который существует и не Завершен . (См. Тема. Состояние ) Занятый поток - это тот, который действительно работает или, точнее, Runnable .

Веб-консоль JBoss имеет тенденцию сообщать о меньшем количестве потоков, поскольку она очень неинвазивна. Другими словами, он не должен создавать дополнительные темы только для того, чтобы отобразить вам веб-страницу. На нем уже запущен веб-сервер, и он уже выделил потоки для обработки веб-запросов до того, как вы вошли в консоль JMX.

Visual VM, с другой стороны, запускает несколько потоков для поддержки удаленного взаимодействия JMX (обычно RMI), которое поставляется с небольшим дополнительным багажом. Вы можете увидеть дополнительные темы, такие как:

RMI TCP Connection(867)
RMI TCP Connection(868)
RMI TCP Connection(869)
JMX server connection timeout

Сказав это, несоответствие, о котором вы сообщаете, выходит за рамки и заставляет меня думать, что вы не смотрите на ту же JVM.

Консоль JMX очевидна :), поэтому я предполагаю, что ваша Visual VM подключена в другом месте. Посмотрите, можете ли вы сопоставить аналогичное имя потока (используя MBean jboss.system: type = ServerInfo listThreadDump операция), или просмотрите MBean в Visual VM и проверьте MBean JBoss. Эти mbean-компоненты хороши для просмотра, поскольку они указывают на привязку к сокету, поэтому они не могут иметь одинаковые значения, если они не были одинаковыми процессами JVM:

jboss.web:name=HttpRequest1,type=RequestProcessor,worker=http-0.0.0.0-18080

Конечно, другое дело, если вы сначала запустите VisualVM, запустите его, а затем перейдете на консоль JMX и не увидите столько потоков, то вы определенно находитесь на другой виртуальной машине.

Приветствие.

// Николай

...