jStat

jdk自带监控程序jvisualvm的使用

匿名 (未验证) 提交于 2019-12-02 23:47:01
编辑应用所在的tomcat服务器下的bin目录下的catalina.sh文件,修改如下: 配置如下内容: 红字内容需要进行添加,黄色背景的需要根据具体的主机情况配置。 进入到本地的jdk安装目录下,找到jvisualvm.exe,双击打开 建立远程连接 图一 添加远程 图二 建立远程主机ip 图三 添加jmx连接 图四 双击建立好的连接可以实时查看当前程序的运行状况和堆栈信息等 图一 概述:显示当前tomcat服务器的整体运行状况 图二:可事实动态显示cpu、堆栈、类、线程的相关信息 图三:线程:可实时动态的显示进程的使用状况 点击线程Dump按钮可以显示具体的进程的内容,可从此页面查看到进程的具体信息以及报错信息 (4)通过此工具的使用,当ITSM系统僵死时,可看到明显的进程变化 a.所有的请求进程都进入了监控状态,所有请求都无法访问 通过上述分析,查看连接池配置,对连接池的活动连接数和空闲连接数做了调账,如下图: 同时找到对应的sql语句进行优化,之前的sql存在笛卡尔积,同时数据量大,没有建立索引,通过dba的分析修改了sql语句,并对timeouttime字段建立索引,截图如下(包含原有sql【被注释了】) Jdk自带的监控小工具可用来对java程序进行调优和问题分析。 应用僵死后是否有dump或javacore文件生成?拿到后用MemoryAnalyzer 等工具分析一下

简单总结Linux上排查JVM问题,cpu飙升或者内存不足

匿名 (未验证) 提交于 2019-12-02 21:56:30
前言 首先建议先简单了解JVM的内存机制,以及GC垃圾回收机制 初步了解jvm的内存分配,gc以及简单的jvm内存配置 以下j开头的命令基本都是java命令 ,如果没有设置全局环境变量,需要加上 ${java_home} 全路径。如 /usr/local/jdk8/java/bin/jmap pid 一、内存不足 1. 查看pid ps -ef | grep java 或 jps -lv 24130 就是pid 2. jmap -heap查看堆内存 jmap -heap pid 上面就是jvm的堆内存配置信息,以及新生代,老年代,永久代的内存最大值和当前使用值 3. jmap -histo:live 这里会触发Full GC jmap -histo:live pid > 1.txt 然后查看1.txt less 1.txt 或者 cat 1.txt 4. jmap -dump:live 同样会触发Full GC 可以导入到本地的jvisual进行分析,这个工具在jdk的java/bin目录下 可以查看类的实例数和所占内存大小,分析哪个类异常 二、cpu飙升 1. top命令 top命令查看cpu,内存情况 top 找到占用cpu高的pid top -Hp pid 再找出占用高的pid 2. jstack查看对账信息 假如通过Top命令

作业8:常用java命令(二)

匿名 (未验证) 提交于 2019-12-02 20:37:20
一、jinfo(Configuration Info for Java) 选项 作用 -flag name 打印改名字的VM设置 -flag +|- name 是否打印某个VM设置 -flag name=value 设置某个VM设置为某个值 -sysprops 打印系统中所有Java设置 -flags 打印所有VM设置 打印所有的VM和系统的Java设置 $ jinfo -flags 8472 VM Flags: -XX:CICompilerCount=4 -XX:ConcGCThreads=2 -XX:G1ConcRefinementThreads=8 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=268435456 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=734003200 -XX:MaxNewSize=440401920 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5835340 -XX:NonProfiledCodeHeapSize=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 -XX:

查看java内存命令

北战南征 提交于 2019-12-02 14:57:09
jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。 jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。 详细:在使用这些工具前,先用JPS命令获取当前的每个JVM进程号,然后选择要查看的JVM。 jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。 jstat -class pid:显示加载class的数量,及所占空间等信息。 jstat -compiler pid:显示VM实时编译的数量等信息。 jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 jstat -gccapacity:可以显示,VM内存中三代(young,old

Java GC机制及原理 项目实际遇到GC问题解决思路和经验总结

╄→гoц情女王★ 提交于 2019-12-02 07:49:58
1.什么是GC及基础知识介绍 GC(Garbage Collection) 简称垃圾收集 垃圾回收 JVM运行时数据区: 1.方法区存储类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等 2.堆(heap)存储对象的信息,分为新生代(Eden,Survivor1,Survivor2)和老年代,永久代 3.程序计数器,存储的数据所占空间的大小不会随程序的执行而发生改变,因此,对于程序计数器是不会发生内存溢出现象(OutOfMemory)的 4.Java栈(stack)是Java方法执行的内存模型 5.本地方法栈则是为执行本地方法(Native Method)服务的 2. 垃圾回收策略 讲到垃圾回收,那么什么时候对象需要回收,如何去判断对象是存活还是死亡,我们采用引用计数法来判断对象是否存活,当一个对象被引用时,计数器值加1,当引用失效时减1. 强引用与弱引用的区别: 强引用:类似Object obj = new Object();只要强引用还存在,垃圾回收器不会收集被引用的对象 软引用:用来描述还有用但非必需的对象 通过可达性分析算法来判断对象是否需要被回收 垃圾回收策略有 标记清除法(会产生过多的内存碎片),复制法(内存使用率不高),标记整理法 垃圾收集器分类 Serial收集器:发展历史最悠久的收集器 ParNew收集器 Minor GC &

jstat命令总结

可紊 提交于 2019-12-02 06:06:51
一、 jstat是什么 jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。 jstat 是用于见识虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、jit编译等运行数据,它是线上定位jvm性能的首选工具。 二、 jstat命令格式 jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] generalOption : 单个的常用的命令行选项,如-help, -options, 或 -version。 outputOptions : 一个或多个输出选项,由单个的statOption选项组成,可以和-t, -h, and -J等选项配合使用。 Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] Definitions: <option> An option reported by

jvm监控命令-jstat

邮差的信 提交于 2019-12-01 22:18:24
jstat 用于查看服务器上某个服务的GC情况。 一般使用方式 jstat –gcpid 或 jstat –utilpid 时间间隔—每个一定时间(指定的时间间隔)输出一次进程pid的内存情况及gc情况。 类加载统计(-class) Loaded Bytes Unloaded Bytes Time 加载class的数量 所占用空间大小 未加载数量 未加载占用空间 时间 [lillcol@node1 lillcol]# jstat -class 22363 Loaded Bytes Unloaded Bytes Time 19410 39919.5 112 155.0 10.18 编译统计(-compiler) Compiled Failed Invalid Time FailedType FailedMethod 编译数量 失败数量 不可用数量 时间 失败类型 失败的方法 [lillcol@node1 lillcol]# jstat -compiler 22363 Compiled Failed Invalid Time FailedType FailedMethod 25021 2 0 71.64 1 org/apache/spark/ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1

How to get heap usage using jstat?

a 夏天 提交于 2019-12-01 08:31:39
问题 I'm running jstat -gc (from OpenJDK): # jstat -gc 1 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 287744.0 290304.0 88368.6 0.0 1469440.0 787186.5 2162176.0 1805969.7 945432.0 923880.4 136576.0 133284.0 268 32.797 21 30.089 62.886 How to read: used heap heap size max heap from this output, just like shown by VisualVM? 回答1: See https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html for general reference. Current heap size would be the sum of all the fields

Jstack and Jstat stopped working with upgrade to JDK6u23

左心房为你撑大大i 提交于 2019-11-30 11:28:36
问题 We recently upgraded from JDK6u20 (Linux, 32bit and 64bit) to JDK6u23. Since then, we cannot longer use the tools jstack and jstat to get monitoring information from the running process. If we switch back to JDK6u20, everything works fine. We are running Tomcat 6. According to this forum post, others have the same problem: http://forums.oracle.com/forums/thread.jspa?threadID=2151967&tstart=0 Running simple plain Java processes and using the tools works. Jstack says: Unable to open socket file

jdk自带分析vm工具(jdk 5.0以上版本)

纵然是瞬间 提交于 2019-11-30 09:30:39
一、概述 SUN 的JDK中的几个工具,非常好用。秉承着有免费,不用商用的原则。以下简单介绍一下这几种工具。(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装) 。 我一共找到以下四个工具:重点看看jconsole和jmap。 Java代码 jps 与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 4.console 一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。 二、 使用介绍: 1、jps :我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独 占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。 使用方法:在当前命令行下打 jps(需要JAVA