Java VisualVM远程监控JVM

Java VisualVM远程监控JVM

大家好,又见面了,我是全栈君。

  VisualVM是一个以监控、显示本地或者远程服务器JVM工作情况,进行性能调优的工具。借助VisualVM,我们可以实现对JVM内存各个子池、CPU、垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题。


远程监控Linux JVM有两种连接方式:

CentOS6.5安装:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Ubuntu12.04安装:sudo apt-get install java-7-openjdk


方式1:通过Jstatd启动RMI服务

1.开启远程监控访问,将下面注释去掉,Ubuntu和CentOS JAVA安装路径不同,其他配置基本一样。

 Ubuntu:

1
2
3
# vi /etc/java-7-openjdk/management/jmxremote.password 
monitorRole  QED      
controlRole   R&D

 CentOS:

1
2
3
4
5
6
# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.31-1.b13.el6_6.x86_64/jre/lib/management/
# cp jmxremote.password.template jmxremote.password
# chmod 644 jmxremote.password
# vi jmxremote.password
monitorRole  QED      
controlRole   R&D

2.jstatd以守护进程启动

1
2
3
4
5
6
7
8
9
# jstatd -J-Djava.rmi.server.hostname=192.168.1.156 &
# 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)

出现错误,说没有权限,于是百度一下,找到解决办法,就可以正常启动了,如下:

1
2
3
4
5
6
# cd /tmp
# vi jstatd.all.policy
grant codebase 
"file:${java.home}/../lib/tools.jar" 
   
permission java.security.AllPermission; 
};
# jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.156 &

打开JVisualVM工具(默认端口1099)–>添加远程主机–>双机主机IP,即可监控

CPU图形没有显示,不受此JVM支持,目前还没找到原因,有知道的博友,还请告知下,谢谢!

wKiom1TERXnT2A5RAAZz4IfE-2E179.jpg

方式2:JMX方式监控应用程序,我们以Tomcat为例(常用)

1
2
3
4
5
6
7
8
9
10
# cd /root/apache-tomcat-8.0.17/bin
# vi catalina.sh   #找到JAVA_OPTS,在下面添加,添加的位置并没要要求
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
JAVA_OPTS="$JAVA_OPTS-Dcom.sun.management.jmxremote 
        
-Dcom.sun.management.jmxremote.port=9999 
        
-Dcom.sun.management.jmxremote.authenticate=
false 
        
-Dcom.sun.management.jmxremote.ssl=
false 
        
-Djava.rmi.server.
hostname
=192.168.1.156"
# ./startup.sh 
# netstat -antp |grep 9999    #查看端口是否监听

打开JVisualVM工具–>添加远程主机–>在远程主机添加JMX连接–>补全端口,确认即可

wKiom1TESjugXERQAAdJO8Fa6Gs528.jpg

本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1608005,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107925.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP curl_init函数——爬虫必备

    PHP curl_init函数——爬虫必备原文地址:http://www.jb51.net/article/25193.htm我们可以使用PHP的扩展库-Curl,这个扩展库通常是默认在安装包中的,你可以它来获取其他站点的内容,也可以来干别的。 备注:这两段代码需要php_curl扩展库的支持,查看phpinfo(),如果curlsupport enabled则表示支持curl库。 1、Windows下的PHP开启curl库

    2022年7月12日
    19
  • CAS单点登录原理(包含详细流程,讲得很透彻,耐心看下去一定能看明白!)

    CAS单点登录原理(包含详细流程,讲得很透彻,耐心看下去一定能看明白!)转载地址http://www.cnblogs.com/lihuidu/p/6495247.html1、基于Cookie的单点登录的回顾    基于Cookie的单点登录核心原理:   将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。   该方式缺…

    2022年6月6日
    31
  • MFC 消息处理 PeekMessage TranslateMessage DispatchMessage

    MFC 消息处理 PeekMessage TranslateMessage DispatchMessagehttp blog csdn net linlingzhao article details 由 arain 于星期二 11 02 2010 10 44 发表 MSGmessage nbsp nbsp if PeekMessage amp message NULL 0 0 PM REMOVE nbsp nbsp nbsp nbsp nbsp nbsp TranslateMes amp m

    2025年11月1日
    3
  • long转string java_java中long如何转成String????????

    long转string java_java中long如何转成String????????展开全部longl=Long.parseLong(“String”);longl=Long.parseLong(“String”,int);longl=Long.valueOf(“String”).longValue();Long.ValueOf(“String”)与Long.parseLong(“String”)的区别Long.ValueOf(“String”);返回Long包…

    2022年5月14日
    40
  • jquery.tmpl.js使用[通俗易懂]

    jquery.tmpl.js使用[通俗易懂]juqery的temp插件使用jquery.tmpl.js使用juery因丰富的插件曾被广泛使用,这里介绍一下jQuery模板的使用方法,用到jquery.tmpl.js插件。入门<head><metacharset=”UTF-8″><title>temp-demo</title><scriptt…

    2022年6月22日
    43
  • jar包反编译工具

    jar包反编译工具在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供具体的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很具体,这对我们使用就非常不方便。  有道是,知其然才知其所以然。有时候,我们…

    2022年7月8日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号