所谓“工欲善其事,必先利其器”,人类最大的进步就是创造和使用工具,好的工具确能起到事半工倍的作用。今天再给大家介绍一款非常实用的工具:JProfiler
监控JVM运行情况,用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存溢出原因。所以这两款工具作用的粒度不一样,JConsole是全局性的,检测整体上是不是正常。而Jprofile作用粒度较小,可以定位到具体是那些类方法存在问题。
JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大得CPU资源。
要想在windows环境下远程监控Linux服务器上的JBoss运行情况。windows和Linux环境都需要安装Jprofiler,并且版本号要一致。去官网上下载对应的版本即可。http://www.ej-technologies.com/download/jprofiler/files
Linux Jprofiler 安装
① 下载jprofiler_linux_9_1.tar.gz,上传至/usr/local/software 目录
② 解压文件
cd /usr/local/software
tar -zxvf /usr/local/software/jprofiler_linux_9_1.tar.gz
③ 移动文件到指定目录
mv /usr/local/software/jprofiler9 /usr/local
④ 配置jprofiler环境变量
vi /etc/profile
增加如下内容到最后
JPROFILER_HOME=/usr/local/jprofiler9/bin/linux-x64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME
(如果是32位的则最后的目录为linux-x86)
使配置文件生效:
source /etc/profile
⑤ 配置JBoss启动配置文件standalone.conf
以便打开JVM虚拟机的api端口,在这里为8849
打开{JBossHome}/bin下的standalone.conf配置文件,在虚拟机启动参数位置(JAVA_OPTS)加入以下这句
JAVA_OPTS="$JAVA_OPTS -agentlib:jprofilerti=port=8849,nowait -Xbootclasspath/a:/usr/local/jprofiler9/bin/agent.jar"
⑥ 然后重新启动Jboss,服务器端配置完成。
Windows Jprofiler 安装
额,这个就不多说了。破解方法从网上搜索一下即可。
建立远程连接
1). 运行 JProfiler 。第一次打开会有向导,忽略它。
2). 选择 Session->Integration Wizard->New Remote Integratation
3). 选择 On a remote computer;Platform of remote computer 选择 Linux x86/AMD 64;Next
4). 选择服务器的 JDK 环境,这里是:Oracle,1.8.0,hotspot;next
5). 选择启动模式:这里选第一种 wait for a connection from the jprofiler GUI;next
6). 输入远程服务器的 IP ;Next
7). 输入服务器上的 jprofiler 的安装路径,如/usr/local/jprofiler9 ;next
8). 输入端口:这里是默认值 8849;next
通过以上步骤即可建立起客户端和服务端的连接,下面是效果图:
第二次登录后直接点击【StartCenter】,打开保存的链接即可。
注意:
1. JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。
2. 如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。