Profiliram pokretanje Java aplikacija često s VisualVM-om, ali treba X da se pokrene na mašini.
Znam da mogu povezivati se putem upravljačkog porta, ali to će biti uzorkovanje van mreže, što mi nije dovoljno.
Dakle, tražim rješenje s kojim mogu iz naredbenog retka profilirati upotrebu CPU-a metoda pokrenute Java aplikacije. . Dovoljno mi je da prikupim podatke na serveru i tada se prikupljeni podaci mogu analizirati na drugom računaru.
Ažuriranje:
Čini se da moram biti precizniji. Želim profilirati pokrenutu Java aplikaciju iz naredbenog retka, ne želim je zaustaviti i ponovo pokrenuti.
Самое точное профилирование может быть достигнуто с https://github.com/jvm-profiling-tools/async-profiler.
Этот проект является низким служебным профилировщиком выборки для Java, которая не страдает от проблемы предвзятости Safepoint. Это показывает Определенные для горячей точки API, чтобы собрать отслеживания стека и отследить выделения памяти. Профилировщик работает с OpenJDK, Oracle JDK и другие Среды выполнения Java на основе HotSpot JVM.
Вот мой сценарий, чтобы установить и выполнить его от командной строки:
асинхронный-profiler.sh
if [ ! -d profiler ]; then
mkdir profiler && cd profiler && curl -L https://github.com/jvm-profiling-tools/async-profiler/releases/download/v1.6-ea/async-profiler-1.6-ea-linux-x64.tar.gz | tar xvz
echo 1 > /proc/sys/kernel/perf_event_paranoid
echo 0 > /proc/sys/kernel/kptr_restrict
#apt install openjdk-8-dbg
else
cd profiler
fi
#jps
./profiler.sh -d 60 -f dump_`date +%Y-%m-%d_%H-%M-%S`.jfr `jps -q`
Это предполагает, что приложение запущено при том же пользователе и существует единственный PID процесса Java, который будет перечислен jps. Профильная продолжительность составляет 60 секунд. Никакая модификация опций запуска приложения или перезапуск приложения не необходимы.
GUI для исследования дампов встроен в Окончательную ИДЕЮ IntelliJ: https://www.jetbrains.com/help/idea/cpu-profiler.html .