KAR*_*ván 54 java performance command-line profiling jvm
我经常使用VisualVM运行Java应用程序,但需要X才能在计算机上运行
我知道我可以通过管理端口连接,但这将是一个离线采样分析,这对我来说是不够的.
所以我正在寻找一种解决方案,我可以从命令行分析正在运行的Java应用程序的方法的CPU使用情况.这对我来说足以在服务器上收集数据,然后可以在不同的机器上分析收集的数据.
更新:
看来我需要更加具体.我想从命令行分析正在运行的Java应用程序,我不想阻止它并重新运行它.
And*_*ejs 30
该jvmtop应用程序是从命令行配置的是方便的工具.没必要停止jvm.用法:
jvmtop.sh --profile <PID>
Run Code Online (Sandbox Code Playgroud)
会给你这样的输出,它将在应用运行时更新:
Profiling PID 24015: org.apache.catalina.startup.Bootstrap
36.16% ( 57.57s) hudson.model.AbstractBuild.calcChangeSet()
30.36% ( 48.33s) hudson.scm.SubversionChangeLogParser.parse()
7.14% ( 11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
...
Run Code Online (Sandbox Code Playgroud)
优点是它不需要使用仪器.待定形的jvm的类不会被改变.
如果你正在寻找更直观的东西,那么看一下基于jvmtop的jvm-mon
rog*_*ack 13
看起来从命令行配置java应用程序的"内置"方法是使用profiling命令行参数启动它,就像这样
$ java -Xrunhprof:cpu=samples,file=myprogram.hprof ...
Run Code Online (Sandbox Code Playgroud)
然后在进程退出(并在那时创建文件)后,使用一些GUI工具(或jhat等Web服务器工具)或命令行工具检查文件"myprogram.hprof" .
如果您使用"QUIT"信号技巧,提到/sf/answers/164110551/,那么您可以随意生成文件而无需退出JVM(它似乎附加到上一个输出文件).或者等到进程退出并生成文件.
这个(内置)分析器不经常进行样本,因此整体上通常具有较低的减速/冲击.
参考:http://web.archive.org/web/20160623224137/https: //thunderguy.com/semicolon/2004/04/18/profiling-a-java-program-easily/
我们已经在我们的服务器上使用了hprof,它肯定比sysouts更好,以防你无法运行完整的VisualVM会话.
使用hprof的例子很多:
使用https://github.com/jvm-profiling-tools/async-profiler可以实现最精确的分析。
这个项目是一个低开销的 Java 采样分析器,不受安全点偏差问题的影响。它具有特定于 HotSpot 的 API 来收集堆栈跟踪和跟踪内存分配。分析器与 OpenJDK、Oracle JDK 和其他基于 HotSpot JVM 的 Java 运行时一起工作。
这是我从命令行安装和运行它的脚本:
异步分析器.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`
Run Code Online (Sandbox Code Playgroud)
它假设应用程序在同一用户下运行,并且 jps 会列出一个 java 进程 PID。分析持续时间为 60 秒。
无需修改应用程序的启动选项或重启应用程序。
用于检查转储的 GUI 内置于 IntelliJ IDEA Ultimate:https : //www.jetbrains.com/help/idea/cpu-profiler.html。
归档时间: |
|
查看次数: |
42689 次 |
最近记录: |