淡定哥头像

技术文档

MAC使用 VisualVM 进行JAVA性能分析及调优

1、Mac下安装JVisualVM:

http://visualvm.java.net/download.html下载安装文件进行安装
安装jdk后,在jdk bin目录下。

2、启动JVisualVM,界面如下:

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jvisualvm

3、启动后的JVisualVM会自动检测本地的java应用

4、远程监控linux服务器

1)创建一个文本文件,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {

   permission java.security.AllPermission; 

};  


2)将文本文件重命名为jstatd.all.policy,并root登陆,上传到linux服务器jdk/bin目录下(如: /opt/jdk1.8.0_05/bin/)

3)要使Java VisualVM成功连接到远程服务器上,服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看,如果显示的是127.0.0.1或者与本机实际IP不一致的话,需要把/etc/hosts文件中相应的地址改为本机实际IP,如下:

192.22.1.1       localhost wx-test
192.22.1.1       localhost    ipv6-localhost    ipv6-loopback

4)启动jstatd服务(jvm监控服务),默认端口为1099,也可以自定义一个接口,如1103

[root@ian.wang bin]#cd  /opt/jdk1.8.0_05/bin/

[root@ian.wang bin]# rmiregistry 1103 &

[root@ian.wang bin]# jstatd -J-Djava.security.policy=jstatd.all.policy  -J-Djava.rmi.server.logCalls=true -p 1103 &

jstatd开始运行后,使用 CTRL+A+D 断开 screen 界面,回到 shell 界面。如果想切换回 jstatd 运行界面的话,使用 screen -r -d 命令即可。 

5)ps -ef|grep java  可以看到jstatd的进程

root      6183  3663  8 17:44 pts/1    00:00:00 jstatd -J-Djava.security.policy=jstatd.all.policy  -J-Djava.rmi.server.logCalls=true -p 1103 &

6)打开JVisualVM,添加需要监控的远程服务器ip地址,并设置监听的端口为被检测机器启动jstatd的端口,如下


7)连接成功后应该会显示Jstatd及其PID,如下:


8)发现在监控远程服务器时,没有监控到cpu数据,这时需要在服务器端建立 JMX ,建立 JMX 提示要求端口号。( JMX: Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。 JMX 可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用 。而 Visual VM是通过 JMX 来和远程 Java 应用联系的 )。修改远程服务器tomcat的catalina.sh的参数,如下:

JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

9)重启被检测远程机器的tomcat,并打开mac上的JVisualVM,添加JMX,如下:





分享到: 

* 发表评论:
Top