jvm监控服务性能、以及资源使用情况
创始人
2024-02-28 23:29:22

目录

1.前言:

2.如何监控

2.1.spring admin 

2.2.pass平台

2.3jvm 本地jdk监控本地服务

2.3.1介绍

2.3.2JVisualVM能做什么

2.3.3使用

2.4jvm 本地jdk监控远程服务

方式一

方式二


1.前言:

常规新项目上线,做非功能测试(性能测试),或者峰值测试时,常规要检查服务器性能,例如,cpu、内存、io他们的使用情况,以及波动是否合理,要进行参考了解(数据库服务器也不除外。)

2.如何监控

2.1.spring admin 

spring 自带的admin监控项目,相关资源,参考:基本使用

2.2.pass平台

现在常规服务部署流程,使用到了pass平台,附带的有监控功能,这里不进行展开了

或者可以使用第三方服务进行监控,

2.3jvm 本地jdk监控本地服务

2.3.1介绍

JVisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的).

2.3.2JVisualVM能做什么

VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。

2.3.3使用

1、监控本地的java进程

jvisualvm位于JAVA_HOME/bin目录下,如下图:

 

如果只是监控本地的java进程,是不需要配置参数的,直接打开就能够进行监控。首先我们需要在本地打开一个Java程序,例如我打开IDEA,这时在jvisualvm界面就可以看到与IDEA相关的Java进程了:

在使用jonsole、jvisualvm时,不显示本地Java进程信息

 点击一个进程,就可以看到该进程的概述信息,该进程的JVM参数以及系统属性等信息都能够查看到:

点击 “监视” 就能够看到CPU、内存、类以及线程的活动状况,点击右上角的 “堆Dump” 就能够导出内存映像文件:

点击 “线程” 就能够看到该进程内部的所有线程,以及线程的运行状况等信息。如果点击右上角的 “线程Dump” 就会导出一个内容与jstack打印内容一致的文件:

目前没有访问,空跑,这么多空闲线程,要保证稳定运行性能指标时,没有多余的空闲线程即可 

运行:正在运行的
休眠:sleep
等待:wait
驻留:线程池里面空闲的线程
监视:阻塞的线程,正在等待锁
 

 

点击 “抽样器” 界面中的 “CPU ” 就可以动态的看到每个方法的执行时间,当我们的代码执行的比较慢了,就可以通过抽样器来查看是哪一个方法执行的比较慢:

 而点击 “内存” 的话,就可以实时的、动态的查看到每个类实例对象的数量以及这些实例所占用的内存大小:

在Profiler界面上,可以对CPU、内存进行性能分析,分析后会给出分析结果:

 

 

2.4jvm 本地jdk监控远程服务

打开jvisualvm,双击 “远程” 选项,添加一个远程主机,即远程的服务器:

然后编辑catalina.sh文件,在该文件中加入如下配置内容:
```c
[root@VM-0-5-centos ~]# vim /home/tomcat/apache-tomcat-9.5.8/bin/catalina.sh
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=106.52.186.223"

配置简单说明:

-Dcom.sun.management.jmxremote添加一个jmx远程连接属性
-Dcom.sun.management.jmxremote.port=9004 指定连接的端口号
-Dcom.sun.management.jmxremote.authenticate=false 是否启用验证
-Dcom.sun.management.jmxremote.ssl=false 是否启用ssl
-Djava.net.preferIPv4Stack=true 是否优先使用ipv4
-Djava.rmi.server.hostname=106.52.186.223 指定远程主机的ip地址
 

 

增加完配置后,重启Tomcat,查看是否有9004端口,有的话就代表配置成功了,如下:

[root@VM-0-5-centos ~]# netstat -lntp | grep java

回到jvisualvm中,添加JMX连接,配置连接地址和端口,如下:

 

同样的,可以像监控本地进程一样,监控远程的进程,在界面的操作上是一模一样的。唯一不同的也就是需要添加一个远程主机,然后到远程的Java进程上配置一些jmx参数而已:

以上我们是以Tomcat这种服务型的进程作为一个示例,只需要去配置Tomcat的脚本文件就可以了。那么如果我们需要监控的是自己线上跑的一个Java进程需要怎么进行配置呢?

方式一

使用这些参数,只不过是作为启动参数,在启动项目的时候加上即可,如下:

[root@VM-0-5-centos ~]#  nohup java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=106.52.186.223 -jar boke-2.0.jar  > /data/mylog.log 2>&1

方式二

编辑/etc/profile文件,在该文件中加入如下配置内容:

[root@VM-0-5-centos ~]# vi /etc/profile
export JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=106.52.186.223"

成功启动后,也是使用同样的方式进行连接,注意端口不要弄错了:

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...