标签:
本文来读书籍《深入理解java虚拟机-JVM高级特性与最佳实践》的阅读笔记,并且对虚拟机性能监控与故障排查一节做了内容整理。
关于导图中的两部分内容还是希望大家能够亲自测试体验下,在网上也有不少的文章介绍,这里摘录几篇个人认为不错的文章,供参考:
由于在 linux 服务器上面,使用远程的终端命令看齐来没有那么直观,而服务器上面有没有桌面显示程序,可以采用在客户端(mac/windows/linux)上面进行使用图形化的监控工具,在使用 visualVM 之前,必须先配置远程服务器上面的 jstatd
进程启动才行,关于 jstatd
请参考:
启动方法如下:
1、在启动的目录创建文件 jstatd.all.policy
,加入下面的权限控制,否则会报错 Could not create remote object access 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)
添加代码内容如下,${java.home}/../lib/tools.jar
最好替换成机器上的地址:
1
|
grant codebase "file:${java.home}/../lib/tools.jar" {
|
2、后台启动 jstatd
进程 :
1
|
nohup $JAVA_HOME/bin/jstatd -J-Djava.rmi.server.hostname=192.168.9.92 -J-Djava.security.policy=jstatd.all.policy -J-Dcom.sun.management.jmxremote.authenticate=false -J-Dcom.sun.management.jmxremote.ssl=false -J-Dcom.sun.management.jmxremote.port=8888 &
|
参数说明如下:
3 、验证可用性
使用 ps -ef|grep -i 8888
来验证该进程是否存在,存在后,在你的客户端使用 jps <ip>
来查看是否能够看到远程机器的虚拟机进程,能看到说明就是OK的。
这样经过这三部,就可以在客户端的VisualVM上查看远程机器的内容了,具体打开 VisualVm 程序,在 Remote 中右键新建连接,输入远程服务器的地址即可,如下图一,点击某一个连接,右键打开即可查看某个进程的情况:监控Linux服务器上面的tomcat进程 如图二 :
通过使用“插件”管理器安装由“VisualVM 插件中心”提供的插件,可以向 VisualVM 添加功能。您也可以开发自己的插件,然后将其添加到更新中心来扩展 VisualVM 的功能。
例如,安装 VisualVM-MBeans 插件可以向应用程序标签中添加 “MBeans” 标签,通过此标签,可以在 VisualVM 内监视和管理 MBeans。
安装 VisualVM 插件:
标签:
原文地址:http://www.cnblogs.com/yudar/p/4883351.html