1.1 简介以及连接
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,它是Java自带的简单性能监控工具。下面以对tomcat的监控为例,带领大家熟悉Jconsole这个工具。
Step 1,在dos/bash命令下输入:jconsole;
Step 2,在弹出的对话框中选中apache,并点击connect(假设你的tomcat已经启动);
接下来,你就能使用jconsole来做一些简单的性能监控了。
1.2 模块介绍
1.2.1 Overview
1. 概要界面,主要显示堆内存使用情况、活动线程数、加载类数、CPU使用率四个参数的概要,可以通过下拉框来定制显示的时间范围;
2. 假如堆内存的图像一直在上升而没有下降的动作发生,则要怀疑是否内存泄露;健壮的项目由于GC的存在,所以它的上升和下降的幅度应该大抵相同;
3. CPU的图像规律跟堆内存的大致相同。
1.2.2 Memory
1. 图示为被监控程序的详细内存图;
2. 关注点1:点击右上的GC按钮可以通知JVM进行垃圾回收,实质是把垃圾回收队列的优先级提高;
3. 关注点2:GC time显示了每次回收的时间、算法以及回收数,7.619 seconds是用时,Copy表示垃圾回收机制的复制算法,MarkSweepCompact表示垃圾回收机制的标记-清除-压缩算法,1426 collections表示回收的数量;
4. 右下角的图案,Heap内存区包括:年轻代Eden Space、存活代Survivor Space和老年代Tenured Gen;Non-Heap内存区包括:代码缓存区Code Cache和持久代Perm Gen;可通过改变下拉框或者直接点击图形实现切换。
1.2.3 Threads
1. Peak表示最大的线程数,这个数值可以通过更改<tomcat_home>/conf/server.xml下的maxThreads来更改;
2. 点击具体的Thread之后,我们可以看到它的方法栈的详细调用情况;
3. 点击Detect Deadlock可以检测是否有死锁。
1.2.4 Classes
关注点:类的数量变化。
1.2.5 VM Summary
关注点1:上面几栏是关于系统和项目的概要信息;
关注点2:最下面一栏的第一项是tomcat设定的JVM参数,如果你想知道你设置的参数有没有成功启用,看这里就对了。
1.2.6 MBeans
关注点1:Attributes显示该bean的详细细节;
关注点2:Operations显示该bean的所有方法,可以点击该按钮触发方法,但个人不推荐这么做,应该通过程序的统一入口来触发。
2 JVisualVM
2.1 简介以及连接
JVisualVM是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
Step 1,假如你手头上的Tomcat项目已经启动,在bash/dos下输入:jvisualvm,敲击回车;
Step 2,选中Tomcat,双击即可启动监控,在初始页面我们即可看到一些概要信息和JVM参数。
2.2 模块介绍
2.2.1 Monitor
关注点1:按钮“Perform GC”可通知JVM将垃圾回收动作的优先级提高;
关注点2:“Daemon”线程是指JVM的守护线程,通俗的理解为JVM的系统进程;
关注点3:按钮“Heap Dump”可生成堆内存快照,下面详细讲解Heap Dump的使用。
2.2.1.1 Heap Dump
1)Summary
关注点1:红框标注的箭头处,可以凭你的点击顺序切换前后窗口;
关注点2:“Inspect”检查处可以查询最大的对象,个数可自行定制;
关注点3:点击“Show Threads”可以显示线程细节,如下所示:
关注点1:timed_waiting和runnable表示线程运行状态;
关注点2:daemon表示这个线程是守护线程,如没有标记daemon则表示它是一个用户线程,如main线程;
关注点3:prio表示该线程的优先级,在java线程中数字越大优先级越高,取值在1至10之间,默认为5;
关注点4:点击被标注成蓝色的相关类,可以在Instances界面查看细节;
2)Instances
关注点1:右上角的三个按钮可以对界面进行定制;
关注点2:点击“Compute Retained Sizes”可计算每个field的保留尺寸,简言之就是它所占的byte值;
关注点3:右下角红框处标记出了,不同的图形代表不同的角色;
3)Classes
关注点1:左下角可以通过filter来过滤显示视图;
关注点2:右击某个类可以让其在Instances界面显示,查看其细节;
关注点3:点击右上角红框处可以与另一个内存快照进行比较,在比较视图中可以看出每个类的增加和减少的情况;
4)OQL Console
关注点1:点击Saved Queries,选中具体的Query实例,在点击Execute就可以进行查询了,Save按钮可以保存你的query语句;
关注点2:比较使用的是PermGen分析语句;
2.2.2 Threads
关注点1:线程的颜色从绿、紫、黄、红,分别代表运行、休眠、等待和死锁;
关注点2:Timeline以时间轴显示线程情况,Table以表格显示,Details以细节的图形+表格方式显示线程情况。当然你也可以选中单个线程来显示,通过点击下拉框即可实现;
关注点3:点击Thread Dump即可生成线程快照,其功能跟2.2.1.1 Heap Dump 1)Summary中的Show Threads类似,这里不多加解释。
2.2.3 Sampler
2.2.3.1 采样器简介
1. 通过settings可以对CPU的采样来源以及内存的刷新时间进行设置;
2. 点击CPU或者Memory即可开始监控,点击Stop则停止采样;
2.2.3.2 CPU
1)CPU samples
关注点1:点击Thread Dump可生成线程快照;
关注点2:点击Snapshot可生成线程的快照,快照里面包含了所有线程的调用树以及其热点编译情况,如下图所示:
2)Thread CPU Time
关注点:点击Deltas按钮后,可记录线程的变化,功能有点类似JProfiler的“Mark Current Values”。
2.2.3.3 Memory
1)Heap histogram
关注点1:Deltas、Peform GC、Heap Dump的功能与上文类似;
关注点2:点击Snapshot将生成如下的内存快照,主要显示堆内存中类的内存信息:
2)PermGen histogram
图为持久代的内存情况。
3)Perthread allocations
图为每个线程的内存分布情况。
2.2.4 Profiler
2.2.4.1 CPU
Profiler跟Sampler不同在于它是对程序的实时监控,而Sampler只能说是一段时间内的统计采样。
在CPU功能模块我们可以看到每个热点编译方法的使用时间。
2.2.4.2 Thread
对当前存活对象的实时监控。
3 如何开启远程监控
3.1 Tomcat中的参数设定
windows系统在catalina_home/bin/setenv.bat中加入如下配置:
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9005" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false"
linux系统在catalina_home/bin/setenv.sh中加入如下配置:
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port='9005' -Dcom.sun.management.jmxremote.authenticate='false' -Dcom.sun.management.jmxremote.ssl='false'"
1)‘-Dcom.sun.management.jmxremote’表示启用Java Management Extensions(Java管理扩展)技术,简称JMX。JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。
2)‘9004’表示这个JMX服务的端口号;
3)‘authenticate’表示false时无需帐号密码验证,如改为true(启用帐号密码验证),需增加以下配置:
> 在JRE_HOME/lib/management下将'jmxremote.password.template'文件复制多一份,比如复制为'jmxremote.password',将这个复制出来的新文件底部的monitorRole和controlRole前面的注释去掉;
> monitorRole的值表示读取的密码,controlRole表示读取和写入的密码,请将二者的值更改为你想要的密码;
> 修改setenv.sh配置(windows请修改.bat)如下:
export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port='9005' -Dcom.sun.management.jmxremote.password.file=pwdFilePath -Dcom.sun.management.jmxremote.ssl='false'"
> ‘Set file permissions so that only you can read and write the password file’,这个复制出来的密码文件需设置成只有属主具备读写权限,否则tomcat将无法正常启动;
4)-Dcom.sun.management.jmxremote.ssl='false'
分享到:
相关推荐
Java 自带的性能监控工具使用简介 Java 自带的性能监控...Java 自带的性能监控工具使用简介,包括 VisualVM 和 JConsole,这些工具可以帮助开发者快速监控和优化 Java 应用程序的性能,提高应用程序的性能和可靠性。
Jconsole是JDK自带的监控工具,可以对Java应用程序进行监控。本文将介绍通过Jconsole工具对Java应用程序进行监控,包括环境准备、操作步骤和监控内容等。 环境准备 要使用Jconsole对Java应用程序进行监控,需要在...
总的来说,Java性能监控是一个涉及多方面技术的过程,包括理解JVM的工作原理、垃圾回收策略以及如何有效地使用监控工具。通过对这些工具的熟练运用,开发者能够快速识别和解决性能问题,提升Java应用的性能和稳定性...
JVM性能监控工具VisualVM Jconsole插件所需jar包 JTop.jar 点击'JConsole Plugins'按钮 点击'Add JAR/Folder'按钮, 添加JDK_HOME/demo/management/JTop/JTop.jar7)重新打开监控页面,可以看到JConsole
2. JConsole:同样是JDK自带的监控工具,提供了GUI界面来监视Java应用程序的性能和资源使用情况。 3. VisualVM:功能更加强大的Java性能分析工具,可以远程连接到Java应用进行监控。 4. YourKit Java Profiler:商业...
4. **YourKit Java Profiler**: YourKit是另一款强大的商业Java性能监控工具,特别适合进行内存泄漏检测和CPU性能分析。它拥有直观的用户界面和强大的分析报告。 5. **JMX**: Java Management Extensions (JMX) 是...
**JConsole**,是Java SDK自带的一个GUI工具,同样用于监视Java应用程序,包括Tomcat。它通过JMX接口与Java进程进行通信,提供以下功能: 1. **内存监控**:显示堆内存和非堆内存的使用情况,帮助识别内存泄漏。 2....
JConsole 观察分析 Java ...JConsole 是一个非常有用的工具,可以轻松地监控 Java 应用程序性能和跟踪 Java 中的代码。通过使用 JConsole,可以轻松地分析 JAVA 程序的运行情况,并且可以手动进行 GC 查看内存变化。
本篇将重点介绍几种常用的JVM监控工具,包括jstack、jconsole、jinfo、jmap以及jdb和jstat。 首先,`jstack`是一个用于打印Java线程堆栈跟踪的工具。当应用出现死锁或者线程阻塞时,jstack可以帮助我们查看各个线程...
JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。下面我们将详细...
jconsole.jar是Java SDK自带的一款图形化监控工具,它基于JMX(Java Management Extensions)技术,能够对本地或远程的Java应用程序进行全方位的监控。通过这个工具,用户可以直观地查看到CPU使用率、内存分配、线程...
总的来说,Java性能监控需要结合操作系统层面的内存管理知识,理解JVM的工作原理,并利用各种工具进行深入分析。通过对CPU、内存等关键资源的监控和优化,可以显著提升Java应用的性能和稳定性。
jconsole是Java Development Kit(JDK)5.0中自带的一个性能监控工具,用于监控Java运行状态、线程数、进程数、对象、JVM内存信息、时间等性能信息。该工具可以帮助开发者和管理员实时监控Java应用程序的运行情况,...
3. **运行分析**:启动或连接到目标应用,开始性能监控。 4. **查看结果**:分析结束后,查看生成的报告,理解性能数据并找出问题。 5. **优化与迭代**:根据分析结果调整代码或JVM设置,然后再次运行分析,直至...
JConsole是Java平台自带的一个强大的监控和管理工具,它能够帮助开发者和运维人员实时监控Java应用程序的性能和资源消耗情况。本文将深入探讨JConsole的使用方法及其在优化和排查问题时的重要作用。 首先,我们需要...
JConsole是自Java 5开始集成在JDK中的一个强大的性能监视和故障排除工具。它能够帮助开发者和运维人员监控Java应用程序的运行状态,并进行性能分析。JConsole支持图形用户界面(GUI)模式和命令行模式,使得无论是初学...
本文将详细讲解如何利用JConsole工具来实现对JBoss服务器的性能监控,以确保系统的稳定性和效率。 JConsole是Java平台自带的一个强大的可视化管理工具,它允许开发者和管理员实时监控Java应用程序的性能和资源消耗...
在JDK8中,JConsole是一个强大的可视化工具,它允许开发者实时监控Java虚拟机(JVM)的状态,包括内存使用、线程活动、类加载、虚拟机概要以及管理MBeans等关键信息。 **JConsole工具** JConsole是Java平台的标准...
Java性能监控与调优是Java开发中的重要环节,它涉及到应用程序的稳定性、效率及资源管理。这个名为"monitor_tuning_Demo"的压缩包文件,很显然是为了教授如何使用JDK提供的监控工具以及进行JVM(Java虚拟机)的调优...