JProfiler性能分析工具详解

JProfiler性能分析工具详解,第1张

JProfiler 是一个商业授权的 Java剖析工具,用于分析Java EE和Java SE应用程序.

JDK 本身定义了目标明确并功能完善的JNI( Java Native Interface ) 与虚拟机直接进行交互,这些 API 能很方便的进行扩展,从而满足开发者各式的需求.

JVMTI( JVM Tool Interface) ,是JAVA虚拟机提供的本地接口,它是实现调度器以及其它Java运行测试与分析 工具 的基础.

并不一定在所有的JDK提供商都有实现,但在主流的Oracle JDK、Open JDK上都有其实现.

1.用户在JProfiler GUI中下达监控命令( 对应用户的一个点击 ).

2.JProfiler GUI通过自身Socket的8849端口向位于JVM的JProfiler Agent发送监控指令.

3.JProfiler Agent收到指令后向JVMTI注册事件或执行相关的命令.

4.JVMTI根据事件和命令的类型返回相对应的数据( 线程状态、对象实例、CPU负荷、GC状态信息等)

5.JProfiler Agent从JVMTI中得到相应数据后将对其进行计算,最终通过Socket传输给JProfiler GUI中进行展示.

https://www.ej-technologies.com/download/jprofiler/files

激活码: L-Larry_Lau@163.com #23874-hrwpdp1sh1wrn#0620

***** Linux *** 作系统无须激活

Select from all local JVMs模式:将扫描本地所有正在运行的JVM实例

Attach to profiled JVM模式:选择本地或远程正在运行的如此JVM实例,远程被监控的机器一定要预先安装JProfiler.

***** 需指定远程 服务器的JProfiler的通讯端口

步骤一:Session-->Integration Wizards-->New Server Integration

步骤二:选择应用服务器的类型以及版本号

步骤三:选择与本地或远程服务器的服务进行集成

***** 本文将使用远程服务器模式.

***** 若 选择与远程服务器的服务进行集成则需要选择远程服务器的 *** 作系统类型.

步骤四:选择服务器使用的JVM供应商以及版本号

步骤五:选择JProfiler的启动模式

JVM将等待JProfiler Agent接收到JProfiler GUI发送的配置信息后再进行启动( 即Lauch Type连接模式 ,启动一个新备配的JVM实例)

立即启动JVM,稍后再与JProfiler GUI进行连接并向JProfiler Agent发送配置信息( 数据的采集方渣滚迅式、过滤器、触发器等信息 )

***** 若使用此模式则需要让JVM在启动时自动加载JProfiler Agent,因此需要在startup.bat/startup.sh文件中添加命令

startup.bat:set CATALINA_OPTS=-agentpath:{JProfiler安装目录}\bin\windows-x64\jprofilerti.dll=port=8849,nowait %CATALINA_OPTS%

startup.sh:CATALINA_OPTS=-agentpath:/{JProfiler安装目录}/bin/linux-x64/libjprofilerti.so=port=8849,nowait $CATALINA_OPTS

export CATALINA_OPTS

离线分析,JProfiler GUI无法与JProfiler Agent进行连接,因此需要将数据的采集方式、过滤器、触发器等信息打包成config.xml配置文件,在启动该JVM实例时加载JProfiler Agent以及配置文件,使用此模式需要配合triggers触发器使用,当发生指定的事件后触发指定的 *** 作.

***** 若使用此模式则需要让JVM在启动时自动加载JProfiler Agent和context.xml配置文件,因此需要在startup.bat/startup.sh文件中添加命令

startup.bat:set CATALINA_OPTS=-agentpath:{JProfiler安装目录}\bin\windows-x64\jprofilerti.dll=port=8849,nowait,config=C:\Users{用户名}.jprofiler9\config.xml %CATALINA_OPTS%

startup.sh:CATALINA_OPTS=-agentpath:/{JProfiler安装目录}/bin/linux-x64/libjprofilerti.so=port=8849,config={预定义目录}\config.xml $CATALINA_OPTS

export CATALINA_OPTS

步骤六:填写远程服务器的IP地址

步骤七:输入远程服务器中JProfiler的安装目录( 供JProfiler生成脚本时使用 )

步骤八:选择应用服务器的启动脚本,JProfiler会根据选择的启动脚本文件生成一份适用于JProfiler特定启动模式的脚本文件.

***** 最终在本地生成startup_jprofiler.sh文件,需将此文件复制到远程服务器中应用服务器的bin目录并对文件赋予执行的权限,在服务器中直接通过JProfiler提供的startup_jprofiler.sh文件来启动服务.

***** 若使用离线启动模式则还需要将JProfiler生成的context.xml配置文件复制到远程服务器中,然后修改startup_jprofiler.sh文件中JVM加载context.xml文件的路径.

步骤九:设置JProfiler GUI通讯的端口

步骤十:检查配置项

步骤十一:选择数据的采集方式

JProfiler将对需要分析的class字节码文件中写入自己的bytecode, 对于正在运行的JVM实例选择此模式将会重新加载字节码文件到JVM的运行时数据区域结构中 .

***** 这是JProfiler全功能模式,在此设置中,调用堆栈信息是准确的,但是CPU开销可能很高( 取决于Filter的控制 ),若要分析的类较多,则对应用的性能产生影响,因此使用此模式一般配合Filter使用,只对特定的类或包进行分析.

此模式对CPU的开销非常低,但不支持某些功能( 方法的执行次数、执行时间等 ), 这种模式在连接正在运行的JVM实例时更为安全.

步骤十二:选择配置Filter和Trigger

配置Filter( 适用于Instrumentation数据采集模式 )

配置Trigger( 多用在离线的启动模式 )

1.选择触发器的类型

2.选择触发的动作

步骤十三:完成配置,连接JProfiler Agent,对程序进行监控.

***** 每个Session表示一次会话,Session可以通过人工创建 ( New Session ) 或者与服务应用进行集成来产生( Integration Wizards ).

***** 支持将当前JVM实例的运行状态保存为快照( Save Snapshot )并提供快照与快照之间的对比功能.

Telemetries视图:包含JMM内存的使用情况( 全局堆与非堆、局部伊甸园区、幸存者区、老年代)、GC线程的活动情况( 发生GC的时间,是属于Minor GC还是Full GC )、当前JVM实例的线程概况、CPU的负载等信息.

Live Memory视图:展示当前堆中实例的个数、方法的调用链等信息.

方法调用链信息:

Heap Walker视图:用于堆的快照分析,可以选择在Live Memory中记录的对象或者当前运行状态时堆的对象也可以直接在对象视图右键对象Show Selection In Heap Walker.

CPU Views视图:可以按运行顺序逐级查看当前程序运行时的耗时、在一定时间内统计方法的执行效率.

程序运行耗时:

一定时间内统计方法的执行效率( 单位:微秒 ):

Total Time:执行总时长.

Inv:执行的次数.

Avg Time:方法平均执行时长.

Median Time:第中间次数的执行时长.

Min Time:最短执行时长.

Max Time:最大执行时长.

你好,请问你是想问HyperTUner是华为自研的性能分析工具吗?HyperTUner是华为自研的性能分析工具。华为使用鲲鹏性能分析工具HyperTuner创建系统则枯性能分析以及函并或数分析任务。华为鲲鹏性能优化工具是一款针对鲲鹏平台的性能调优工具,包含系统性能优化工具和Java性能优化工具。本文使用Java性能优化工具对运绝盯伍行中的Java程序进行在线分析和采样分析,找到程序问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

vmstat(VirtualMeomoryStatistics,虚拟内存统计) 是Linux中监控内存的常用工具,可对 *** 作系统的虚拟内存、进程、CPU等的整体情况进行监视。

vmstat的常规用法:vmstat interval times即每隔interval秒采样一次,共采样times次,如果省略times,则一直采集数据,直到用户手动停止为止。

top命令的汇总区域显示了五个方面的系统性能信息:

1.负载:时间,登陆用户数,系统平均负载;

2.进程:运行,睡眠,停止,僵尸;

3.cpu:用户态,核心态,NICE,空闲,等待IO,中断等;

4.内存:总量,已用,空闲(系统角度),缓冲,缓存;

5.交换分区:总量,已用,空闲

任务区域默认显示:进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU占用率,内存占用率,累计CPU时间,进程命令行信息。

htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。

Htop可让用户交互式 *** 作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标 *** 作。

与top相比,htop有漏链以下优点:

▪ 可以横向或者纵向滚动浏览进程列表,以便看到返顷孙所有的进程和完整的命令行。

▪ 在启动上,比top更快。

▪ 杀进程时不需要输入进程号。

▪ htop支持鼠标 *** 作

Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

用法:

netstat –npl 可以查看你要打开的端口是否已经打开。

netstat –rn打印路由表信息。

netstat –in提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。

▪ 杀掉某一程序的方法:ps aux | grep mysqld | grep –v grep | awk ‘{print 2 == “Z”){print $4}}’ | xargs kill -9

跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。

举例:查看mysqld在linux上加载哪种配置文件,可以通过运行下面的命令:

能够打印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷。

lsof(list open files)是一个列出当前系统打开文件的工具。通过lsof工具能够查看这个列表对系统检测及排错,常见的用法:

查看文件系统阻塞 lsof /boot

查看端口号被哪个进程占用 lsof -i : 3306

查看用户打开哪些文件 lsof –u username

查看进程打开哪些文件 lsof –p 4838

查看远程已打开的网络链接 lsof –i @192.168.34.128

perf是Linux kernel自带的系统性能优化工具。优势在于与Linux Kernel的紧密结合,它可以最先应乎宴用到加入Kernel的new feature,用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。

性能调优工具如 perf,Oprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo() 的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。

https://rdc.hundsun.com/portal/article/731.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12238171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存