可与jprofiler/yourkit媲美的java诊断工具Visualvm

一度我曾以为在java profile领域,很难有工具能超越jprofileryourkit

相比较jprofiler/ youkit优势:

 1)     开源免费

 2)     性能开销比jprofiler小很多.kylin性能优化项目中,jprofiler性能损耗大,而visualvm  基本不受影响。

3)     被监控端无需额外安装agent

 劣势:  没有jprofiler那样直观地树状展现方法调用栈。

 

 由于visualvm远程监控比本地监控少很多功能,所以visualvm建议安装在linux服务器端。

1.1.1   下载visualvm

Visualvm要求在jdk1.6_07上。

1.1.2   在被监控服务器上安装visualvm

      不用jdk自带的,因为jdk自带的滞后。从https://visualvm.dev.java.net/download.html下载。

      先部署好java 6以上环境。

      大部分应用都在linux上,所以visualvm安装在linux目录。

1.1.3   Windows机器上安装xming,输出linux图形化界面

 

主要是将linux display定向到windows xming server上。Xming使用请参考http://www.51testing.com/?uid-13997-action-viewspace-itemid-99183


 

linux shell

 export DISPLAY=windows ip:0

./visualvm &

如:

 1.1.4   安装插件

Tools->plugin

 

 1.1.5   设置java允许jmx访问

 少这个步骤,则cpu sample会无数据。

 可以设置java jmx选项为无验证。

-Dcom.sun.management.jmxremote.ssl=false    -Dcom.sun.management.jmxremote.authenticate=false

 

  也可以:

[admin@QA-145-1 ~]$ ps -ef|grep java

admin   32289 32281 99 14:06 pts/7   00:09:21 /usr/alibaba/java/bin/java -Dprogram.name=run.sh -server -Xms2g -Xmx2g -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseCompressedOops -XX:+DoEscapeAnalysis -XX:+AggressiveOpts -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djboss.server.home.dir=/home/admin/kylin/deploy/jboss_server -Djboss.server.home.url=file:/home/admin/kylin/deploy/jboss_server -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XML11Configuration-Dcom.sun.management.config.file=/home/admin/kylin/deploy/conf/jmx/jmx_monitor_management.properties-Dapplication.codeset=GBK -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false -Djava.endorsed.dirs=/usr/alibaba/jboss/lib/endorsed -classpath /usr/alibaba/jboss/bin/run.jar:/usr/alibaba/java/lib/tools.jar org.jboss.Main

 

[admin@QA-145-1 ~]$ cat /home/admin/kylin/deploy/conf/jmx/jmx_monitor_management.properties |grep -v '#'

com.sun.management.jmxremote.port=2009

com.sun.management.jmxremote.ssl=false

com.sun.management.jmxremote.authenticate=true

com.sun.management.jmxremote.password.file=/home/admin/kylin/deploy/conf/jmx/jmx_monitor_users.properties

com.sun.management.jmxremote.access.file=/home/admin/kylin/deploy/conf/jmx/jmx_monitor_roles.properties

[admin@QA-145-1 ~]$ cat /home/admin/kylin/deploy/conf/jmx/jmx_monitor_users.properties |grep -v '#'

monitor monitor

control control1

 

[admin@QA-145-1 ~]$ cat /home/admin/kylin/deploy/conf/jmx/jmx_monitor_roles.properties |grep -v '#'

monitor  readonly

control  readwrite

1.1.6   采样cpu或者memory对象

点击samplecpu sample检查哪些方法耗时多。

 

 Memory sample:检查哪些类占内存多

 

这里点击settings设置过滤规则。

 1.1.7   安装jconsole plugin

点击'Add JAR/Folder'按钮,

      

    添加JDK_HOME/demo/management/JTop/JTop.jar

 

参考:

http://zzxanadu.javaeye.com/blog/600183

 1.1.8   安装eclipse插件

 

https://visualvm.dev.java.net/eclipse-launcher.html

 

下载解压到eclipse安装目录。

 

 运行应用程序,弹出的launcher选择visualvm,将激活visualvm.

猜你喜欢

转载自javaeye-mao.iteye.com/blog/1561608