Java мониторинг приложений за более длительные периоды времени? - PullRequest
0 голосов
/ 08 мая 2020

Используя такие инструменты, как JConsole, я могу отслеживать приложение Java в реальном времени. Как можно анализировать производительность за более длительный период времени? Скажем, через день? Или неделю?

Могу ли я использовать простые инструменты, такие как jConsole?

1 Ответ

2 голосов
/ 08 мая 2020

Существуют варианты универсального c подхода «контролировать как можно больше параметров»:

  • Командная строка: jcmd <PID|main class> PerfCounter.print ( ref ) - вы будете тогда вам нужно обернуть голову вокруг имен свойств, которые он выводит, запланировать периодический запуск этого, хранить данные где-нибудь, визуализировать это самостоятельно. . Затем вы можете найти их (вы можете увидеть их и то, что они экспортируют, например, в JConsole), и с помощью инструмента командной строки, например jmxterm , вы можете записать значения и визуализировать их. Та же процедура: запланируйте себя, запишите, визуализируйте себя. Он не слишком удобен для пользователя, поэтому я упоминаю об этом подходе потому, что ...
  • ... люди обычно используют специализированную систему мониторинга (вспомните Graphite, Zabbix, Logstash / Kibana et c. - Я добавляю их как ключи для поиска вместе с "Java / JVM / JMX / JFR"), которые могут собирать информацию из процессов Java через JMX и красиво ее представлять. Periodi c работает, хранит данные временных рядов, визуализация решается этими системами.
  • JFR («Java Flight Recorder») - это механизм, встроенный в JVM, который позволяет иметь непрерывную запись многих показателей системы JVM +, периодически выгружать их в файл, затем вы можете визуализировать их с помощью JM C («Java Mission Control»). Он «дешевле» в том смысле, что вам не нужно устанавливать / поддерживать отдельную систему мониторинга, но менее доступен (если не спарен с системой мониторинга): вам нужно собирать, скачивать, обрабатывать файлов .

В дополнение к ним существует jstat , который в основном совпадает с jcmd ... PerfCounter.print, но в основном для показателей, связанных с памятью, он имеет функцию «периодически запускать» встроен и представляет результаты несколько иначе (одна «запись» - 1 строка).

Я бы сказал: если вам нужно делать это один раз или время от времени, будь то в течение более длительного периода, и вам нужно всего несколько параметров , например, память / количество потоков / ..., затем используйте jstat, jcmd PerfCounter.print; если нужно больше параметров, то JFR / JM C. Если вам это нужно как что-то, что работает вместе с вашей системой, всегда собирает и представляет, доступно людям, не имеющим прав администратора в системе, в которой находится JVM, тогда изучите системы мониторинга и их интеграцию с приложениями Java.

...