python远程监控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:# vi /etc/java-7-openjdk/management/jmxremote.password

monitorRole  QED

controlRole   R&D

CentOS:# 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以守护进程启动# 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)

出现错误,说没有权限,于是百度一下,找到解决办法,就可以正常启动了,如下:# 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支持,目前还没找到原因,有知道的博友,还请告知下,谢谢!

方式2:JMX方式监控应用程序,我们以Tomcat为例(常用)# 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连接-->补全端口,确认即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值