您现在的位置是:首页 > 服务器服务器
教你如何通过JConsoler监控Tomcat的JVM内存
2022-07-18 21:04:38服务器0人已围观
简介这篇文章主要介绍了教你如何通过JConsoler监控Tomcat的JVM内存,主要通过jmx 对java进行监控的方法,tomcat故障案例解析,本文给大家介绍的非常详细,需要的朋友可以参考下
目录
1.监控Tomcat的方式2.Java自带的监控命令 3.Tomcat故障案例4.配置Tomcat JMX监控5.使用Jsconsole连接JMX查看监控数据通过JConsoler监控Tomcat的JVM内存
1.监控Tomcat的方式
简单命令 现成脚本 通过zabbix自定义监控自定义监控 只要是用命令能得到的东西都能去监控
通过jmx 对java进行监控
其他监控通过ipmi 监控硬件的
通过snmp 监控网络设备的,只要支持snmp都能监控
2.Java自带的监控命令
jps 导出java相关的进程 格式:jps -lvm 参数选项:-lvm最详细[root@localhost ~]# jps -lvm7457 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp7525 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat_8082/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat_8082 -Dcatalina.home=/application/tomcat_8082 -Djava.io.tmpdir=/application/tomcat_8082/temp9144 sun.tools.jps.Jps -lvm -Denv.class.path=.:/application/jdk/lib:/application/jdk/jre/lib:/application/jdk/lib/tools.jar -Dapplication.home=/application/jdk1.8.0_60 -Xms8m7482 org.apache.catalina.startup.Bootstrap start start -Djava.util.logging.config.file=/application/tomcat_8081/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/application/tomcat_8081 -Dcatalina.home=/application/tomcat_8081 -Djava.io.tmpdir=/application/tomcat_8081/tempjmap 导出jvm信息,常用于自定义监控 格式:jmap pid 参数:-heap
[root@localhost ~]# jmap -heap 7457Attaching to process ID 7457, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.60-b23using thread-local object allocation.Mark Sweep Compact GCHeap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 255852544 (244.0MB) NewSize = 5570560 (5.3125MB) MaxNewSize = 85262336 (81.3125MB) OldSize = 11206656 (10.6875MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB)Heap Usage:#监控的话关注这一列New Generation (Eden + 1 Survivor Space): capacity = 12779520 (12.1875MB) used = 11689352 (11.147834777832031MB) free = 1090168 (1.0396652221679688MB) 91.46941356169872% usedEden Space:#监控的话关注这一列 capacity = 11403264 (10.875MB) used = 11059616 (10.547271728515625MB) free = 343648 (0.327728271484375MB) 96.98640669899426% usedFrom Space:#监控的话关注这一列 capacity = 1376256 (1.3125MB) used = 629736 (0.6005630493164062MB) free = 746520 (0.7119369506835938MB) 45.75718470982143% usedTo Space:#监控的话关注这一列 capacity = 1376256 (1.3125MB) used = 0 (0.0MB) free = 1376256 (1.3125MB) 0.0% usedtenured generation:#监控的话关注这一列 capacity = 28164096 (26.859375MB) used = 18313224 (17.46485137939453MB) free = 9850872 (9.394523620605469MB) 65.02329774760035% used21146 interned Strings occupying 1882520 bytes.jstatck 导出java的进程信息,常用于java程序故障,需要导出线程信息与开发一起研究 格式:jstack -l pid
[root@localhost ~]# jstack -l 7457
3.Tomcat故障案例
系统负载高,tomcat占用CPU较高
1.jps/top/htop精确确定哪个java进程导致 2.jstack导出java线程 3.catalina.out日志分析 4.jmap导出jvm信息,可以通过mat工具进行分析4.配置Tomcat JMX监控
自定义监控:直接在tomcat服务器上写好脚本,在zabbix配置文件写好就行 首先需要在zabiix服务端安装zabbix-java-gateway然后在tomcat服务器开启监控功能 tomcat开启jmx监控功能#修改bin/catalina.sh[root@localhost tomcat]# vim bin/catalina.sh#注意不能分行写会报错找不到命令,要写在一行上CATALINA_OPTS="$CATALINA_OPTS"-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=12345-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jxmremote.ssl=false-Djava.rmi.server.hostname="192.168.81.210"#正确写法CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jxmremote.ssl=false -Djava.rmi.server.hostname=192.168.81.210"#说明CATALINA_OPTS="$CATALINA_OPTS"#修改tomcat启动参数-Dcom.sun.management.jmxremote#开启tomcat远程管理功能-Dcom.sun.management.jmxremote.port=12345#远程管理功能,除了12345端口,还会生成2个随机端口,我们可以开放所有端口Dcom.sun.management.jmxremote.authenticat=false#是否在监控时需要认证-Dcom.sun.management.jmxremote.ssl=false#是否开启ssl连接-Djava.rmi.server.hostname="192.168.81.210"#设置tomcat所在服务器的ip配置完成后重启tomcat即可使用ps命令可以看到输出的信息多了我们写入的几行[root@localhost tomcat]# ps aux | grep javaroot 17786 5.7 10.6 2306592 105860 pts/1 Sl 15:52 0:08 /application/jdk/bin/java-Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources-Dorg.apache.catalina.security.SecurityListener.UMASK=0027-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jxmremote.ssl=false -Djava.rmi.server.hostname=192.168.81.210 -Dignore.endorsed.dirs= -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start使用ss/netstat 命令可以看到多出啦的三个端口[root@localhost tomcat]# ss -lnptu | grep javatcp LISTEN 0 100 :::8080 :::* users:(("java",pid=17786,fd=56))#我们制定的tcp LISTEN 0 50 :::12345 :::* users:(("java",pid=17786,fd=22))#随机的1tcp LISTEN 0 50 :::46272 :::* users:(("java",pid=17786,fd=21))#随机的2tcp LISTEN 0 50 :::46081 :::* users:(("java",pid=17786,fd=24))tcp LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",pid=17786,fd=65))
5.使用Jsconsole连接JMX查看监控数据
到此这篇关于教你如何通过JConsoler监控Tomcat的JVM内存的文章就介绍到这了,更多相关JConsoler监控Tomcat JVM内存内容请搜索技术员网以前的文章或继续浏览下面的相关文章希望大家以后多多支持技术员网!
Tags: JConsoler监控Tomcat JVM内存监控
很赞哦! ()
上一篇:关于Tomcat 结合Atomikos 实现JTA的方法
下一篇:返回列表
相关文章
随机图文
Nginx+Tomcat负载均衡集群安装配置案例详解
Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的相应,Nginx+Tomcat负载均衡集案列是应用于生产环境的一套可靠的Web站点解决方案,对Nginx Tomcat负载均衡集群相关知识感兴趣的朋友一起看看吧解决nginx“504 Gateway Time-out”错误
这篇文章介绍了解决nginx“504 Gateway Time-out”错误的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧IDEA2021 tomcat10 servlet 较新版本踩坑问题
这篇文章主要介绍了IDEA2021 tomcat10 servlet 较新版本踩坑问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下使用zabbix监控oracle数据库的方法详解
这篇文章主要介绍了使用zabbix监控oracle数据库的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
留言与评论 (共有 条评论) |