JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。
其特点:
1、使用方便,界面操作友好
2、对被分析的应用影响小
3、CPU,Thread,Memory分析功能尤其强大,支持对jdbc,noSql, jsp, servlet, socket等进行分析
4、支持多种模式(离线,在线)的分析
5、跨平台
下载地址:https://www.ej-technologies.com/download/jprofiler/version_100
1、客户端(windows)
2、服务端(linux)
下载完成之后,点击安装包bin目录下的执行文件
启动之后的界面
菜单分析:
1.实时监测 Telemetries
2.内存剖析 Live Memory
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
2.堆遍历 Heap walker
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
3. CPU 剖析 CPU View
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
4. 线程剖析 Thread profiler
对线程剖析,JProfiler提供以下视图:
5. 监控和锁 Monitors & Locks
观察JVM的内部线程并查看状态:
6.数据库监测 Databases
1、客户端(这里主要是针对远程服务器的配置设置)
首先,点击Session—>Intergration Wizards(集成向导)—>New Remote Integration(新建远程集成)
然后选择远程机器后点击下一步:
下一步之后选择响应的服务器JVM版本:
选择应用方式,作为客户端进行连接:
选择连接服务器的方式后并配置连接参数:
配置完之后点击下一步并直接点击ok,再点击下一步:
下一步出现就是需要完成服务器配置文件的读取,也就是需要配置远程服务器的服务端的配置路径:
下面需要配置客户端与服务端连接的通讯端口,如果是要多个应用,可以修改不同的端口号,比如8850,8851等等,不要有其他进程占用冲突即可:
这一步需要确认配置信息,并且记住主要几个要点,第一,需要将本地配置产生的jprofiler配置文件config.xml拷贝到服务器上的/opt/jprofiler10.0.4/conf/目录下,第二,将启动参数加入到远程服务器的启动参数配置中去:
第10步直接点击完成即可。稍后在连接会话中进行打开。
2、服务端(主要分为Tomcat和纯Java应用的配置)
先将下载下来的linux版本的JProfiler,jprofiler_linux_10_0_4.tar.gz,上传到远程服务器,放置在/opt/下,
然后解压 tar -zxvf jprofiler_linux_10_0_4.tar.gz,在/opt/下生成jprofiler10.0.4的文件夹
cd /opt/jprofiler10.0.4
上面客户端配置的时候说的有两个要点,现在本地打开config.xml文件,修改里面的key,刚下载并注册的JProfiler,可以通过官网申请到临时的使用注册码,网上找了很多都没有用,就不要浪费这个时间了。
1、点击https://www.ej-technologies.com/download/jprofiler/trial
这样就可以申请一个临时的注册码进行使用,然后在自己的软件上进行更正:
完了之后修改config.xml中第三行的key值:
完成之后将文件上传到服务器的/opt/jprofiler10.0.4/conf/
然后找到应用的启动项,加入启动参数。添加的方式有很多种,只要加上下面这个配置既可以了:
$CATALINA_OPTS="$JAVA_OPTS -agentpath:/opt/jprofiler10.0.4/bin/linux-x64/libjprofilerti.so=port=8849,nowait"
最后配置环境变量并使之生效:
vi /etc/profiles
添加下面参数:
source /etc/profiles
这样就可以启动应用了,使用命令查看启动参数是否添加上:
ps -ef | grep java
[query@pmsapp1 bin]$ ps -ef | grep java
/opt/app/tools/jdk1.7.0_80/bin/java -cp.:/opt/app/tools/jdk1.7.0_80/lib/dt.jar:/opt/app/tools/jdk1.7.0_80/lib/tools.jar:
/opt/app/work/pms-online/conf:/opt/app/work/pms-online/apps/jcbank-pms-online-boot-0.0.1-SNAPSHOT/*:/opt/app/work/pms-online/lib/*
-agentpath:/opt/jprofiler10.0.4/bin/linux-x64/libjprofilerti.so=port=8850,nowait
-server -Duser.home=/opt/app -Dapp.home=/opt/app
-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv4Addresses=true -Dfile.encoding=UTF-8
-Dserver.id=pms-online -Dathena.config=/opt/app/work/pms-online/conf/athena.properties -Dathena.config.decrypt=
-Dspring.profiles.active=test -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -Dlog.active=less
最后再使用客户端进行监控连接:
1、安装过程后启动连接,会突然失去连接,这个时候需要查看应用的启动日志,比如tomcat的话,就在catalina.out中查看具体jprofiler>>>的错误日志;
2、如果出现无效的注册码,还是上面说的去申请临时的注册码;