教你如何通过JConsoler监控Tomcat的JVM内存

目录
  • 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 -lvm
7457 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/temp
7525 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/temp
9144 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 -Xms8m
7482 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/temp
  • jmap 导出jvm信息,常用于自定义监控
  • 格式:jmap pid
  • 参数:-heap
[root@localhost ~]# jmap -heap 7457
Attaching to process ID 7457, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.60-b23

using thread-local object allocation.
Mark Sweep Compact GC

Heap 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% used
Eden Space:				#监控的话关注这一列
   capacity = 11403264 (10.875MB)
   used     = 11059616 (10.547271728515625MB)
   free     = 343648 (0.327728271484375MB)
   96.98640669899426% used
From Space:					#监控的话关注这一列
   capacity = 1376256 (1.3125MB)
   used     = 629736 (0.6005630493164062MB)
   free     = 746520 (0.7119369506835938MB)
   45.75718470982143% used
To Space:				#监控的话关注这一列
   capacity = 1376256 (1.3125MB)
   used     = 0 (0.0MB)
   free     = 1376256 (1.3125MB)
   0.0% used
tenured generation:				#监控的话关注这一列
   capacity = 28164096 (26.859375MB)
   used     = 18313224 (17.46485137939453MB)
   free     = 9850872 (9.394523620605469MB)
   65.02329774760035% used

21146 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 java
root      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 java
tcp    LISTEN     0      100      :::8080                 :::*                   users:(("java",pid=17786,fd=56))
#我们制定的
tcp    LISTEN     0      50       :::12345                :::*                   users:(("java",pid=17786,fd=22))
#随机的1
tcp    LISTEN     0      50       :::46272                :::*                   users:(("java",pid=17786,fd=21))
#随机的2
tcp    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内存内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker 查看jvm内存占用方式

    一.进入docker容器的宿主机,查看运行指定镜像的容器id(结果的第一列): docker ps | grep myImageName(或docker ps | grep java) 二.进入容器内部: docker exec -it containerId sh 三.直接输入top命令: top 可看到基本的容器占用的信息:pid.vsz.cpu.command等.(ctrl+c 或 q,退出top) 四.查看更具体的jvm内存占用: top -m 其中,vsz:Virtual Memory

  • 华为技术专家讲解JVM内存模型(收藏)

    全是干货的技术号: 本文已收录在[github面试知识仓库],欢迎 star/fork: https://github.com/Wasabi1234/Java-Interview-Tutorial 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行. JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行.不同的JVM对于内存的划分方式和管理机制存在着部分差异.结合JVM虚拟机规范,来探讨经典的JVM内存布局. J

  • JVM入门之内存结构(堆、方法区)

    目录 1.堆 1.1 定义 1.2 堆的作用 1.3 特点 1.4 堆内存溢出 1.5 堆内存诊断 2.方法区 2.1 结构(1.6 对比 1.8) 2.2 内存溢出 2.3 常量池 2.4 运行时常量池 2.5 常量池与串池的关系 2.6 StringTable的位置 2.7 StringTable 垃圾回收 2.8 方法区的垃圾回收 3.直接内存 释放原理 1.堆 1.1 定义 是Java内存区域中一块用来存放对象实例的区域[几乎所有的对象实例都在这里分配内存] 通过new关键字创建的对象都

  • 浅谈JVM之使用JFR解决内存泄露

    简介 虽然java有自动化的GC,但是还会有内存泄露的情况.当然java中的内存泄露跟C++中的泄露不同. 在C++中所有被分配的内存对象都需要要程序员手动释放.但是在java中并不需要这个过程,一切都是由GC来自动完成的.那么是不是java中就没有内存泄露了呢? 要回答这个问题我们首先需要界定一下什么是内存泄露.如果说有时候我们不再使用的对象却不能被GC释放的话,那么就可以说发生了内存泄露. 一个内存泄露的例子 我们举一个内存泄露的例子,先定义一个大对象: public class KeyOb

  • 教你如何通过JConsoler监控Tomcat的JVM内存

    目录 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自带的监控命令

  • python脚本监控Tomcat服务器的方法

    文章出处:https://blog.csdn.net/sdksdk0/article/details/80933444 作者:朱培      ID:sdksdk0     -------------------------------------------------------------------------------------------- 对于最近的开发环境,偶尔会有挂掉的现象发生,然而并没有及时发现,下载需要添加一个监控功能,当服务挂掉的时候需要有邮件提醒,同时我们的系统每天晚

  • Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤

    最近公司需要在Linux下监控tomcat的服务,一旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运行,由于Linux下有Shell脚本可以实现此效果,下面是Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤. 1.编写Shell脚本monitor.sh #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # author:EagleHao # date:2018-04-08 # DEFINE # 获取tomcat进程ID(其中[gr

  • 教你怎么用Python监控愉客行车程

    一.愉客行车程监控并通知 大概思路:用户填写指定信息在config.json文件中,通过定时访问网页,获取指定信息,从而达到对指定车程的监控 1.分析网页 按下F12,打开开发者工具,再刷新一下网页 找到我们需要的信息 然后再分析一下它的请求方式 很直观的就看到了几条主要的信息 第一条和第三条是null不重要 第二条是起始站 第四条是终点站 第五条是个数字,经过反复尝试,发现是固定参数 第六条乍一看应该是时间戳,经过验证,的确是车票指定日期零点的时间戳 2.请求头伪装.带参访问指定网页,获取信息

  • 教你在IDEA中使用Tomcat部署并启动Web项目

    首先在Idea中选择编辑运行配置,如下图 左上角的“+”号,选择Tomcat服务,如下图 自定义服务名称和项目在浏览器的访问路径 配置Tomcat服务器路径,如下图 然后在服务器中部署项目(下面的警告提示:Warning: No artifacts marked for deployment 警告:没有标记要部署的项目),点击Deplyment选项,点击“+”号,选择“Artifact”,选择“war exploded” war和war exploded的区别 war:将项目以war包的形式部署

  • Zabbix监控多个JVM进程的方法

    一.场景说明:   我们这边的环境用的是微服务,每个程序都是有单独的进程及单独的端口号,但用jps查询出来的结果有些还会有重名的情况,所以某些脚本不太适用本场景: 二.需求说明: 需使用Zabbix-server监控每个Agent上的jvm进程(监控项具体在模板中展示) 三.准备环境: 1.jvm.py脚本(非本人原创,从Github上直接copy的,此处附上Github地址,可直接去目标地址查看相关说明) 2.https://github.com/qiueer/zabbix/blob/mast

  • 详解Tomcat中查看JVM内存使用情况

    TOMCAT运行时,实时监控当前应用JVM的使用情况:可以利用Tomcat自带的应用manager查看详情. 首先,确认服务目录webapps下有manager应用 其次,需要创建角色manager和对应的用户,修改/conf/tomcat-users.xml  <?xml version='1.0' encoding='utf-8'?>   <tomcat-users>     <role rolename="tomcat"/>     <r

  • 优化Tomcat配置(内存、并发、缓存等方面)方法详解

    Tomcat有很多方面,我从内存.并发.缓存等方面介绍优化方法. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数说明 server 启用jdk 的 server 版: -Xms java虚拟机初始化时的最小内存: -Xmx java虚拟机可使用的最大内存: -XX: PermSize 内存永久保留区域 -XX:MaxPermSize 内存最

  • Docker tomcat的设置内存大小配置方式

    安装再docker中的tomcat,在下载大文件或者某些情况下,会出现tomcat的内存溢出等情况,所以需要配置tomcat的内存大小,docker中的tomcat内存大小配置有两种方式: 一.挂载docker中的配置文件 通过将docker中tomcat的catalina.sh配置文件挂载到宿主机中,然后再catalina.sh配置jvm内存大小即可. 1.需要重新运行一个tomcat容器(注意: 端口和容器名称不能重复) docker run -d \ -v /server/webapps:

  • 如何通过LambdaProbe实现监控Tomcat

    简介: Lambda Probe(以前称为Tomcat Probe)是一款实时监控和管理的Apache Tomcat实例的基本工具. Lambda Probe 是基于 Web + AJAX 的强大的免费开源工具,可以用来实时管理一个单独的host.LambdaProbe拥有几乎所有 Tomcat Manager的功能,可以说是一个增强版本的 Tomcat Manager.除此之外,Tomcat Probe 还拥有很多让开发者和系统管理者更方便的性能.从而使得Tomcat对开发者和管理者更加透明.

随机推荐