VisualVM工具介绍
来源:互联网 发布:jenkins 本机部署php 编辑:程序博客网 时间:2024/06/17 00:43
#VisualVM
VisualVM是一个以监控、显示本地或者远程服务器 JVM工作情况,进行性能调优的工具。借助VisualVM,我们可以实现对JVM内存各个子池、CPU、垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题。
VisualVM是一个Java编写的绿色软件,属于开源范畴。VisualVM是使用插件Plugin的方式提供功能,默认提供了一些基本检测功能。如果需要进行拓展,可以使用下载插件的功能进行。
运行展示
其中,左侧是显示本地和服务器上正在运行的不同进程。双击后可对其进行详细分析。
其中包括但不仅限于:
- CPU使用情况分析
- 堆空间使用情况
- 线程运行状况分析(运行、休眠、等待、驻留等情况)
- 性能分析(Profiler)
- GC调用情况分析(Eden/Old gen使用情况)
软件安装
VisualVM是安装在客户端上的软件,如果需要分析远程服务器的话只需要在服务器端启动jstatd进程或者注册JMX服务即可进行分析。
安装地址:Visual Download。
安装时请注意自己的JDK版本是否符合要求。
软件安装成功后即可对本机进程进行监视,分析。可以在 工具->插件
中添加你需要的插件。
远程服务器连接
VisualVM使用jstatd进程或JMX与远程服务器连接。连接方式如下:
jstatd
jstatd是一个监控 JVM 从创建到销毁过程中资源占用情况并提供远程监控接口的 RMI ( Remote Method Invocation ,远程方法调用)服务器程序,它是一个 Daemon 程序,要保证远程监控软件连接到本地的话需要 jstatd 始终保持运行。
进入服务器中,使用命令jstatd
,会出现以下错误
Could not create remote objectaccess denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) at java.security.AccessController.checkPermission(AccessController.java:559) at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.System.setProperty(System.java:783) at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
解决方法为建立一个文件jstatd.all.policy
,文件内容为
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};
内容含义为给tools.jar文件增加安全权限。增加的安全权限为原有的java安全权限(也就是权限不变)。
然后在服务器中使用命令jstatd -J-Djava.security.policy=jstatd.all.policy
。
**注意:**jstatd.all.policy应为绝对路径或者此文件在当前目录中,默认开启1099端口。启动此进程会将console阻塞,可采取screen
命令将其放入后台执行。
点击添加jstatd连接,输入服务器ip,默认端口为1099,应与服务器端保持一致。这样就可以看到服务器端的java进程了。
如果还是没看到
查看/etc/hosts
是否存在127.0.0.1的地址映射。如果存在,将其全部改成服务器的ip地址即可(别忘了重启jstatd)。
采取此种方法,只能在查看服务器端进程的堆空间信息,不能查看CPU相关信息。如果需要查看,则需要在服务器端绑定JMX
JMX
JMX: Java Management Extensions ,即 Java 管理扩展 , 是一个为应用程序、设备、系统等植入管理功能的框架。
可以增加JVM参数
-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
注:
- -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
- -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
- -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
2,3两个是固定配置,是 JMX 的远程服务权限的
修改方法
- J2EE
如果你要在J2EE环境中配置这些参数,那么你需要在J2EE应用服务器或者Servlet容器相关启动参数设置处指定,其启动文件中来配置,Tomcat是在catalina.sh中配置。
- 运行java类
直接将以上参数加入命令中
eg:
java -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar myJob.jar
- 运行Hadoop
在mapred-site.xml配置文件里面有个mapred.child.java.opts配置,可以用来指定JVM参数。详情请参考
http://www.iteblog.com/archives/981
运行后就可以进行查看远程服务器上的进程的运行情况了。
不过注意要在测试之后将这些配置删除哦。会影响性能,给黑客攻击留下后门的。
【参考资料】
http://ihuangweiwei.iteye.com/blog/1219302
http://blog.itpub.net/17203031/viewspace-765810/
- VisualVM工具介绍
- java 中重要工具 VisualVM介绍
- Java监控工具介绍,VisualVm Yourkit
- JVM调优工具之VisualVM介绍1
- JVM调优工具之VisualVM介绍1
- VisualVM-运行分析工具
- 性能监控工具VisualVM
- VisualVM java监控工具
- JAVA运行分析工具:VisualVM
- 【JVM】故障处理工具VisualVM
- visualvm 性能调优工具
- VisualVM 在线跟踪调试工具
- VisualVM
- VisualVM
- VisualVM
- VisualVM
- VisualVM
- visualVM
- 为ElasticSearch添加HTTP基本认证
- 弹性容量产品设计
- 货板条码打印项目-小记<1>
- ElasticSearch中设置排序Java
- [Elasticsearch] 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_
- VisualVM工具介绍
- [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
- 在js中设置页面跳转
- 或许被我们遗忘的JAVA Math类
- 2016年c#实验3.3:录入学号和姓名
- js中replace的用法
- Touch事件分发机制详解
- es 字段加权重
- Interceptor 拦截器 与 <mvc:annotation-driven />的冲突