资讯专栏INFORMATION COLUMN

Java--☀️JVM性能调优工具之一jconsole,新手也可以快速上手☀️

simpleapples / 2411人阅读

【学习背景】

学习Java的小伙伴,应该对JVM有自己的一定了解,但是你有用过JDK自带的JVM的性能调优工具之一jconsole吗?不知道也没关系,本文将带你花几分钟快速了解如何使用jconsole对JVM进行监控,大家后续有时间可以自己动手学习下,特别是需要进行JVM性能优化的时候,个人觉得在工作中还是比较常用的。

进入正文~


一、JDK说明

本文以JDK1.8.202为例,众所周知Oracle官方JDK从2019年4月16号开始商用收费,最后一个免费JDK版本是1.8.202,JDK8历史版本下载地址:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
下载不了的,也可以这里直接下载1.8.202
链接:https://pan.baidu.com/s/1sO1pEZIAV5fmRLRUuyXkKw 提取码:wrsx

官方公告:The Oracle JDK License has changed for releases starting April 16, 2019(即发布1.8.211 && 1.8.212两个收费版本)

二、Windows运行jconsole

2.1 安装JDK

官方下载并安装JDK1.8.202

或者直接下载.exe链接:https://pan.baidu.com/s/1sO1pEZIAV5fmRLRUuyXkKw 提取码:wrsx

双击运行jdk-8u202-windows-x64.exe 傻瓜式一步一步往下安装即可,示例安装路径:
D:/Softwares/LearningSoftwares/JDK/jdk1.8.0_202/

2.2 Windows运行jconsole

双击JDK安装目录下的bin目录下的jconsole.exe

本地进程直接选中相关进程即可,这里本文以远程服务器指定开放的Tomcat远程端口号12345为例进行连接,成功连接后就可以对JVM的内存进行监控,接下来进行Linux远程服务器Tomcat的相关配置

三、Linux配置远程

我这里以个人学习使用的Linux服务器是阿里云的CentOs 7.7为例,部署Tomcat并配置一个远程12345端口(只是用来做监控的端口,非实际Tomcat的应用端口号,如8080),可以将Java工程部署到Tomcat下,也可以不用部署,因为Tomcat启动运行本身就是依赖JDK(或JRE),正常启动之后本身会占用的一个进程,后续就可以在Windows下通过JDK安装目录bin目录下的jconsole对Linux远程服务器的运行Tomcat进程来对JVM的内存进行监控,本文就先不部署应用了,主要启动Tomcat即可

3.1 配置JDK

已配置好JDK,可以跳过该步骤~
查看JDK版本:java -version

如果没有安装JDK,则需要先下载并安装好JDK
修改/etc/profile配置并添加如下内容(需修改JDK实际路径):

export JAVA_HOME=/usr/java/jdk1.8.0_202export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

刷新配置生效:source /etc/profile
再次查看JDK:java -version

3.2 配置Tomcat

3.2.1 安装Tomcat

已配置Tomcat的可以跳过该步骤
没有安装Tomcat的,可以先到官方下载,再进行解压安装
https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.24/bin/

我这里Tomcat解压并安装的示例路径如下:

mkdir -p /usr/tomcat/cd /usr/tomcat/tar -xvf apache-tomcat-8.0.24.tar.gzcd /usr/tomcat/apache-tomcat-8.0.24

启动Tomcat

cd /usr/tomcat/apache-tomcat-8.0.24/bin./startup.sh


查看Tomcat启动日志

tail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.out

查看Tomcat运行状态

ps -ef|grep tomcatps -ef|grep java

如果Tomcat正常启动,会出现如下相关进程

3.2.2 配置Tomcat远程

3.2.2.1 配置Tomcat远程(无密码)

无密码的很简单,直接修改Tomcat的bin目录下的catalina.sh,在关键信息Execute The Requested Command上面添加如下内容:

CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=12345"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

注意修改***hostname为自己服务器的公网IP,还有***jmxremote.rmi.port这行不能少,少了会无法远程连接,网上很多这里都没配置。

网上有些地方发现catalina.sh中配置CATALINA_OPTS 不生效,于是想通过JAVA_OPTS,如修改上面catalina.sh中为JAVA_OPTS:

JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

能正常启动tomcat,但是这种会导致在执行shutdown.sh停止tomcat时报错,原因是JAVA_OPTS是任何命令的运行时选项,因此执行shutdown.sh命令时会报错,提示端口(如12345)被占用,而CATALINA_OPTS则只会在"开始"时的选项,不会影响停止操作。

重启Tomcat

cd /usr/tomcat/apache-tomcat-8.0.24/bin./shutdown.sh./startup.shtail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.out

查看Tomcat进程
ps -ef|grep tomcat
看到Tomcat进程有远程hostname和port相关的信息,说明正常配置

Windows下重新进行远程连接,不用输入密码,直接连接即可

正常连接,可查看时间范围内的数据,可以对JVM的堆区内存进行监控,还可以监控线程数、类以及CPU使用率

3.2.2.2 配置Tomcat远程(有密码)

第一步:同样,修改catalina.sh内容

CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.xx.x -Dcom.sun.management.jmxremote"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=12345"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

与无密码的区别在于,这里***authenticate的值配置为true,表示需要开启密码进行鉴权

第二步:配置远程用户密码

cd /usr/java/jdk1.8.0_202/jre/lib/management/cp jmxremote.password.template jmxremote.passwordchmod 600 jmxremote.password

修改jmxremote.password,快捷键Shift + G定位到最后,添加一个远程连接用户 用户密码,如:

tomcat abc@123456


也可以放开现有的monitorRole/controlRole两个用户的注解,用来做远程连接也可以

第三步:配置远程用户权限
同样,当前目录下,修改jmxremote.access,快捷键Shift + G定位到最后,给新加的tomcat用户读写的权限:

tomcat readwrite

保存:wq并退出

重启Tomcat

cd /usr/tomcat/apache-tomcat-8.0.24/bin./shutdown.sh./startup.sh

查看Tomcat

tail -f /usr/tomcat/apache-tomcat-8.0.24/logs/catalina.outps -ef|grep tomcat

启动无报错,并且查看tomcat进程也有如下看关键信息***authenticate=true表明配置正常

Windows下重新进行远程连接,输入用户密码进行连接即可

正常连接,监听堆区内存、线程数、类以及CPU占用率如下:

附录:如开启防火墙则需先放开端口

本文使用的示例远程端口是12345,如果服务器已开启防火墙,需要配置防火墙添加该端口,才可以正常远程连接

查看防火墙的状态
systemctl status firewalld.service

查看所有已添加端口
firewall-cmd --permanent --list-ports

或者,查看已添加的指定端口
firewall-cmd --query-port=12345/tcp

没有,则添加指定端口
firewall-cmd --permanent --add-port=12345/tcp

重启防火墙即可
systemctl restart firewalld.service


❤️‍完结,原创不易,觉得有用的小伙伴点个⭐收藏,支持一下也可以,非常感谢~❤️‍

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/120943.html

相关文章

  • 字节跳动学姐熬了一个月才完成这份内部软件测试开发手册,在GitHub标星27k,开源下载

    本文是为了帮大家快速回顾了测试中知识点,这套面试手册整整花了一个月的时间整理出来,上传到Git上目前star数达到了27K+。内容涵盖了诸多技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 同时用XMind画了一张导图记录软件测试的学习笔记,有需要的朋友,帮作者关注点赞收藏三连一下,即可无偿下载一份! 测试开发手册完整版PDF☞☞☞ 软件测试核心知识点目录内容...

    tinna 评论0 收藏0
  • jvm调优

    摘要:一内存调优主要的目的是减小的频率和的次数。调优工具之主要用来输出中运行的进程状态信息。调优工具之和用来查看堆内存使用状况,一般结合使用。 一、jvm内存调优 主要的...

    snowLu 评论0 收藏0
  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0
  • 学习Java必读的10本书籍

    摘要:学习编程的本最佳书籍这些书涵盖了各个领域,包括核心基础知识,集合框架,多线程和并发,内部和性能调优,设计模式等。擅长解释错误及错误的原因以及如何解决简而言之,这是学习中并发和多线程的最佳书籍之一。 showImg(https://segmentfault.com/img/remote/1460000018913016); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slo...

    masturbator 评论0 收藏0
  • 深入理解虚拟机之虚拟机性能监控和故障处理工具

    摘要:监控和故障处理工具显示指定系统内所有的虚拟机进程用于收集虚拟机各方面的运行数据。的常用功能选项测试上面输出了我正在运行程序的包名下的类名虚拟机统计信息监视工具使用于监视虚拟机各种运行状态信息的命令行工具。 《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见面试题总结 本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到): JVM调优的常见命令行工具有哪些?...

    jas0n 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<