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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux系统日志管理详解

    linux系统日志管理详解了解日志文件记录了时间,地点,人物,事件四大信息,故系统出现故障时,可以查询日志文件。系统的日志文件默认都集中放置到/var/log/目录内,其中又以message记录的信息最多。日志文件的重要性主要体现在以下三方面:解决系统方面的错误解决网络服务的问题过往事件记录日志文件的权限通常是设置为root能够读取而已。由于日志文件可以记载系统很多的详细

    2022年5月25日
    38
  • Kubernetes Pod Evicted[通俗易懂]

    Kubernetes Pod Evicted[通俗易懂]一、背景以及措施近日Kubernetes测试集群Pod状态出现Evicted现象,但是项目还是能正常提供服务,最先的解决办法是手动将Evicted状态的Pod删除。#查看Evicted状态的Pod[ops@dev-gate~]#kubectlgetpods-nstaging-services|grepEvictedeureka-server-02-7f658c4dfc-zwtqk0/1Evicted

    2022年5月17日
    70
  • stm32的sdio接口_STM32F411

    stm32的sdio接口_STM32F411一、SDIO接口简介SDIO,全称:SecureDigitalInputandOutput,即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、照相机等。SDIO和SD卡规范间的一个重要区别是增加了低速标准。低速卡的目标应用是以最小的硬件开支支持低速I/O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接收器等应用。STM32的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SDI/O卡和CE-ATA

    2022年10月3日
    0
  • Python 从菜鸟到大咖的必经之路「建议收藏」

    目录一、模块和包1.1模块的基础知识1.2模块的导入1.3使用第三方模块1.4包二、文件和目录操作2.1open()函数——打开文件并返回文件对象2.2文件操作的常用方法2.3应用三、面向对象3.1面向对象基础语法3.2初始化方法__init__3.3属性查找与绑定方法3.4案例3.4.1跑步案例3.4.2家具案例3.5私有属性3.6继承3.6.1面向对象的三大特性3.6.2单继承3.6.2.1继承的概念3.6.2.2继承的语法3.6.2.3方法的重写3.6.2.4

    2022年4月11日
    43
  • HTTP、HTTPS常用的默认端口号

    HTTP、HTTPS常用的默认端口号端口号标识了一个主机上进行通信的不同的应用程序。1.HTTP协议代理服务器常用端口号:80/8080/3128/8081/90982.SOCKS代理协议服务器常用端口号:10803.FTP(文件传输)协议代理服务器常用端口号:214.Telnet(远程登录)协议代理服务器常用端口号:23HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)HTTPS(securelytran…

    2022年6月14日
    71
  • Python实现“EMD\EEMD\VMD+Hilbert时频图”与“CWT小波时频图”

    Python实现“EMD\EEMD\VMD+Hilbert时频图”与“CWT小波时频图”Python实现“EMD\EEMD\VMD+Hilbert时频图”与“CWT小波时频图”  信号处理中常需要分析时域统计量、频率成分,但不平稳信号的时域波形往往复杂、无序,且傅里叶变换得到的频率成分是该时间段内的平均频率,无法分析频率随时间变化的情况。随后,短时傅里叶变换(STFT)、小波变换(WT)、希尔伯特变换(HHT)等时频分析方法相继而出。  其中,STFT受时间窗口的影响、WT则需要自己选择小波、HHT在变换时需要预先将信号分解为平稳信号。由于网上只有CWT小波时频图的python代码,笔者自

    2025年6月14日
    0

发表回复

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

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