Linux下常用java问题排查命令工具
Posted Leo Han
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下常用java问题排查命令工具相关的知识,希望对你有一定的参考价值。
本文描述的大部分基于linux环境。
对于一个程序,在Linux下我们可以根据程序响应信息查找对应的进程ID:
ps -ef | grep java | grep -v grep | |awk 'print $2'
这样我们就能获得对应程序的进程id,PID
获得PID之后,我们首先可以查看程序所占内存:
top -p $PID
这时候能沟动态的看到进程所占用的CPU和内存占比。
%Cpu(s)显示的是cpu相关使用情况:
us — 用户空间占用CPU的百分比。
sy — 内核空间占用CPU的百分比。
ni — 改变过优先级的进程占用CPU的百分比
id — 空闲CPU百分比
wa — IO等待占用CPU的百分比
hi — 硬中断(Hardware IRQ)占用CPU的百分比
si — 软中断(Software Interrupts)占用CPU的百分比
Mem、Swap则显示的是内存和swap空间使用情况
接下来显示的则是进程相关信息:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状
当我们使用top命令进入top命令行之后,
:
输入P则按照cpu使用率排序;输入M则按照内存使用排序;输入c显示命令的绝对路径;默认的屏幕刷新间隔是3秒钟,输入d后可以指定间隔;输入k后在输入对应进程PID可以kill对应进程;输入W能够保存当前top的配置;top命令默认不停刷新,如下命令在刷新5次后就退出:top -n 5
。
top命令参数:
usage: top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
- -d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
- -p 通过指定监控进程ID来仅仅监控某个进程的状态。
- -q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- -S 指定累计模式
- -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- -i 使top不显示任何闲置或者僵死进程。
- -c 显示整个命令行而不只是显示命令名
- -H 线程模式
top命令下可以使用的交互命令:
- h,? 显示帮助画面,给出一些简短的命令总结说明。
- k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
- i 忽略闲置和僵死进程。这是一个开关式命令。
- q 退出程序。
- r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
- S 切换到累计模式。
- s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
- f,F 从当前显示中添加或者删除项目。
- o,O 改变显示项目的顺序。
- l 切换显示平均负载和启动时间信息。
- m 切换显示内存信息。
- t 切换显示进程和CPU状态信息。
- c 切换显示命令名称和完整命令行。
- M 根据驻留内存大小进行排序。
- P 根据CPU使用百分比大小进行排序。
- T 根据时间/累计时间进行排序。
- W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
查看磁盘容量
通过df -h
来查看:
查看文件大小
可以通过 du -sh
来查看,
du -sh
显示当前文件夹下所有文件的大小之和
du -sh *
显示当前路径下的文件或文件夹的大小
du -sh 路径
显示路径对应的文件或文件夹的大小。
vmstat统计系统内存、CPU、进程状态等
一般vmstat可以传入指定间隔和刷新几次退出:
vmstat 3
每三秒更新一次
vmstat 3 5
每三秒显示一次,更新5次后退出
procs
: 其中r
表示运行和登台CPU时间片的进程数,这个值如果长期大于CPU的个数,说明CPU不足,需要增加CPU;b
表示在等待资源的进程数,比如正在等待I/O或者内存交换等
memory
:显示内存相关信息,swpd
显示切换到内存交换区的内存大小,如果spwd的值不为0 ,或者比较大,只要si,so的值长期为0,一般不用担心,不会影响系统性能;free表示当前空闲的物理内存;buff表示buffers cache的内存数量,一般对块设备的读写需要缓冲;cache表示page cached的内存数量,如果cache值比较大,说明缓存的文件数比较多,如果io中的bi比较小,说明文件系统效率比较好
swap
: si
表示由磁盘调入内存,也就是从内存进入内存交换区的内存大小;so
表示由内存调入磁盘,也就是由内存交换区进入内存的内存大小,一般情况下,si,so为0,如果长期不为0,表示系统内存不足,需要增加系统内存
io
:显示磁盘读写情况,bi
表示读入数据总量;bo
表示写入数据总量,一般设置bi+bo的参考值为1000,如果超过1000,且wa值比较大,表示磁盘I/O有问题,需要提供磁盘读写西性能。
system
:表示采集间隔内发生的中断次数,in
表示在某一间隔时间内观察到的每秒设备中断数,cs
表示每秒产生的上下文切换次数,如果in和cs的次数很大,则内核消耗的cpu时间越多
cpu
: 显示了cpu的使用状态,us
用户进程消耗cpu的时间占比;sy
内核进程消耗cpu的时间占比,如果us+sy 大于80%则可能存在cpu资源不足
;id
表示cpu处在空闲状态的时间占比;wa
显示I/O等待所占用CPU时间占比,wa值越高,说明I/O等待严重,一般参考值是20%
sar获取系统CPU、运行队列、磁盘I/O、分页、内存、网络等信息
sar使用格式如下:
sar [options] [-A] [-o file] interval [n]
其中:
interval为采样间隔,必须有,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
options 为命令行选项,sar命令常用选项如下:
-A:显示所有资源(CPU、内存、磁盘)运行信息
-u:输出系统所有CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
-P:显示指定CPU的使用情况
sar -u 3 5
显示如下:
iostat磁盘统计
用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]
常用选项说明:
-c:只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果
-d:单独输出Device结果,不包括cpu结果
-k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位
-x:输出更详细的io设备统计信息
interval/count:每次输出间隔时间,count表示输出次数,不带count表示循环输出
free查看内存
用法:
free [-bkmotV][-s <间隔秒数>]
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
比如:free -m
uptime 统计系统当前运行情况
输入uptime,输出如下:
输出信息依次为:系统现在的时间,系统从上次开机到现在运行了多长时间,系统目前有多少登录用户,系统在一分钟内、5分钟内、15分钟内的平均负载
网络相关可以参考这里: Linux常用网络相关命令
pidstat
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
pidstat help
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
[ -p <pid> [,...] | SELF | ALL ] [ -T TASK | CHILD | ALL ]
常用参数:
- -u:默认的参数,显示各个进程的cpu使用统计
- -r:显示各个进程的内存使用统计
- -d:显示各个进程的IO使用情况
- -p:指定进程号
- -w:显示每个进程的上下文切换情况
- -t:显示选择任务的线程的统计信息外的额外信息
- -T TASK | CHILD | ALL
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。 - -V:版本号
- -h:在一行上显示了所有活动,这样其他程序可以容易解析。
- -I:在SMP环境,表示任务的CPU使用率/内核数量
- -l:显示命令名和所有参数
上面是一些常用的Linux下系统相关指标的统计分析。
下面说说java常用性能监控工具:
jcmd
打印java进程所涉及的基本类、线程和VM信息
jcmd -l
列出当前所有运行的java进程
jcmd PID help
列出指定java进程支持的命令
然后可以根据列出的命令通过jcmd执行:
jcmd PID VM-CMD
比如:
# jcmd 48952 VM.version
48952:
Java HotSpot(TM) 64-Bit Server VM version 25.101-b13
JDK 8.0_101
jconsole
Jconsole是JDK自带的监控工具,提供jvm活动的图形化视图,包括线程的使用、类的使用和GC活动
jhat
jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。是java虚拟机自带的一种虚拟机堆转储快照分析工具。使用jmap等方法生成java的堆文件后,使用其进行分析。
jmap
提供堆转储和其他jvm内存的使用信息
使用方法如下
# jmap -h
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
<none> to print same info as Solaris pmap
-heap to print java heap summary
-histo[:live] to print histogram of java object heap; if the "live"
suboption is specified, only count live objects
-clstats to print class loader statistics
-finalizerinfo to print information on objects awaiting finalization
-dump:<dump-options> to dump java heap in hprof binary format
dump-options:
live dump only live objects; if not specified,
all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>
Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F force. Use with -dump:<dump-options> <pid> or -histo
to force a heap dump or histogram when <pid> does not
respond. The "live" suboption is not supported
in this mode.
-h | -help to print this help message
-J<flag> to pass <flag> directly to the runtime system
- option: 选项参数。
- pid: 需要打印配置信息的进程ID。
- executable: 产生核心dump的Java可执行文件。
- core: 需要打印配置信息的核心文件。
- server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。
remote server IP or hostname 远程调试服务器的IP地址或主机名。
选项参数: - no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。
- heap: 显示Java堆详细信息
- histo[:live]: 显示堆中对象的统计信息
- clstats:打印类加载器信息
- finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
- dump::生成堆转储快照
- F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.
- help:打印帮助信息
- J:指定传递给运行jmap的JVM的参数
一般可以使用jmap -dump:live,file=dump.file PID
转储堆信息,然后借助其他工具分析堆的情况
jinfo
查看jvm系统属性,可以动态设置一些系统属性,使用方式如下:
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message
jstack
转储java进程的信息,使用参数如下:
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)
Options:
-F to force a thread dump. Use when jstack <pid> does not respond (process is hung)
-m to print both java and native frames (mixed mode)
-l long listing. Prints additional information about locks
-h or -help to print this help message
jstat
提供与JVM性能相关的统计信息,例如垃圾收集、编译活动、类装载等。 jstat的主要优势在于,它可以在运行JVM且无需任何先决条件的情况下动态捕获这些指标,是一个轻量级工具
使用方式如下:
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
Definitions:
<option> An option reported by the -options option
<vmid> Virtual Machine Identifier. A vmid takes the following form:
<lvmid>[@<hostname>[:<port>]]
Where <lvmid> is the local vm identifier for the target
Java virtual machine, typically a process id; <hostname> is
the name of the host running the target Java virtual machine;
and <port> is the port number for the rmiregistry on the
target host. See the jvmstat documentation for a more complete
description of the Virtual Machine Identifier.
<lines> Number of samples between header lines.
<interval> Sampling interval. The following forms are allowed:
<n>["ms"|"s"]
Where <n> is an integer and the suffix specifies the units as
milliseconds("ms") or seconds("s"). The default units are "ms".
<count> Number of samples to take before terminating.
-J<flag> Pass <flag> directly to the runtime system.
[options] : 操作参数,一般使用 -gcutil 查看gc情况
VMID : 本地虚拟机进程ID,即当前运行的java进程号
[interval] : 连续输出的时间间隔,单位为秒或者毫秒
[count] : 连续输出的次数,如果缺省打印无数次
可用参数如下:
-class 类加载的行为统计
-compiler JIT编译器行为统计
-gc 垃圾回收的行为统计
-gccapacity 各个垃圾回收代容量和他们相应的空间统计
-gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
-gcmetacapacity 统计元空间使用情况
-gcnew 显示新生代统计信息
-gcnewcapacity 统计新生代及内存使用情况
-gcold 统计老年代和元空间使用情况
-gcoldcapacity 统计老年代内存使用情况
-gcutil 显示各个各代内存使用百分比
-printcompilation 虚拟机方法编译统计情况
统计类加载情况
# jstat -class 37367
Loaded Bytes Unloaded Bytes Time
11872 22637.4 1 0.9 10.06
Loaded :加载class的数量
Bytes : 加载class的大小(单位KB)
Unloaded :卸载class的数量
Bytes: 卸载class的大小(单位KB)
Time : 加载和卸载class所耗费的时间
gc统计
:
jstat -gc 37367
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
3072.0 3072.0 0.0 624.0 692736.0 185851.9 1398272.0 47526.5 73432.0 70889.0 8664.0 8172.8 1219 4.812 3 0.366 5.178
S0C : 第一个幸存区的总容量(KB)
S1C : 第二个幸存区的总容量(KB)
S0U : 第一个幸存区已使用的容量(KB)
S1U : 第二个幸存区已使用的容量(KB)
EC : 伊甸区的总容量(KB)
EU : 伊甸区已使用容量(KB)
OC : 老年区的总容量(KB)
MC : 元空间的总容量(KB)
MU : 元空间已使用容量(KB)
CCSC : 压缩类空间总容量(KB)
CCSU : 压缩类空间已使用总容量(KB)
YGC : 新生代GC次数
YGCT :新生代GC总耗费时间
FGC : 老年代GC次数
FGCT : 老年代GC总耗费时间
GCT : GC总耗费时间
JIT编译器行为统计
:
jstat -compiler 37367
Compiled Failed Invalid Time FailedType FailedMethod
12654 6 0 47.33 1 org/springframework/beans/factory/support/AbstractBeanFactory isTypeMatch
Compiled :编译成功数
Failed : 编译失败数
Invalid : 无效数量
FailedType : 最后一次编译失效类型
FailedMethod :最后一次编译失效的方法
每个代gc统计
:
jstat -gccapacity 37367
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
698880.0 698880.0 698880.0 3072.0 3072.0 692736.0 1398272.0 1398272.0 1398272.0 1398272.0 0.0 1114112.0 73432.0 0.0 1048576.0 8664.0 1219 3
NGCMN : 新生代占用的最小空间大小(KB)
NGCMX : 新生代占用的最大空间大小(KB)
NGC : 当前新生代空间大小(KB)
S0C : 第一幸存区当前空间大小(KB)
S1C :第二幸存区当前空间大小(KB)
EC : 伊甸区当前空间大小(KB)
OGCMN : 老年区最小空间大小(KB)
OGCMX : 老年区最大空间大小(KB)
OGC : 老年区当前空间大小(KB)
MCMN : 元空间最小空间大小(KB)
MCMX : 元空间最大空间大小(KB)
MC : 元空间当前空间大小(KB)
CCSMN : 压缩类空间最小大小(KB)
CCSMX : 压缩类最大空间大小(KB)
CCSC : 压缩类当前空间大小(KB)
YGC : 新生代GC次数
FGC : 老年代GC次数
垃圾收集统计概述
jstat -gccause 37367
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 20.31 29.44 3.40 96.54 94.33 1219 4.812 3 0.366 5.178 Allocation Failure No GC
S0 :第一幸存区已使用空间百分比.
S1 : 第二幸存区已使用空间百分比
E : 伊甸区已使用空间百分比
O : 老年区已使用空间百分比
M : 元空间使用百分比
CCS : 压缩类空间使用百分比
YGC : 新生代GC次数
FGC : 老年代GC次数
LGCC :最近一次GC原因
GCC : 当前GC原因
元空间使用情况
:
jstat -gcmetacapacity 37367
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1114112.0 73432.0 0.0 1048576.0 8664.0 1219 3 0.366 5.178
MCMN : 元空间最小空间大小(KB)
MCMX : 元空间最大空间大小(KB)
MC : 元空间当前空间大小(KB)
CCSMN : 压缩类空间最小空间大小(KB)
CCSMX : 压缩类空间最大空间大小(KB)
CCSC : 压缩类空间当前空间大小(KB)
YGC : 新生代GC次数
FGC : 老年代GC次数
FGCT: 老年代GC耗费时间
GCT : GC总耗费时间
新生代统计信息
:
jstat -gcnew 37367
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
3072.0 3072.0 0.0 624.0 15 15 3072.0 692736.0 208342.6 1219 4.812
S0C : 第一幸存区总空间大小(KB)
S1C : 第二幸存区总空间大小(KB)
S0U : 第一幸存区已使用空间大小(KB)
S1U : 第二幸存区已使用空间大小(KB)
TT : 提升阈值(提升阈值)
MTT : 最大阈值
DSS : survivor区域大小 (KB)
EC : 伊甸区总空间大小(KB)
EU : 伊甸区已使用空间大小(KB)
YGC : 新生代GC次数
YGCT :新生代GC总耗费时间
统计新生代及内存使用情况
:
jstat -gcnewcapacity 37367
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
698880.0 698880.0 698880.0 232960.0 3072.0 232960.0 3072.0 697856.0 692736.0 1219 3
NGCMN : 新生代最小空间大小(KB)
NGCMX : 新生代最大空间大小(KB)
NGC : 当前新生代空间大小(KB)
S0CMX : 第一幸存区最大空间大小(KB)
S0C : 第一幸存区当前空间大小(KB)
S1CMX : 第二幸存区最大空间大小(KB)
S1C : 第二幸存区当前空间大小(KB)
ECMX : 伊甸区最大空间大小(KB)
EC : 伊甸区当前空间大小(KB)
YGC : 新生代GC次数
FGC : 老年代GC次数
统计老年代和元空间使用情况:
jstat -gcold 37367
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
73432.0 70889.0 8664.0 8172.8 1398272.0 47526.5 1219 3 0.366 5.178
MC : 元空间总大小(KB)
MU : 元空间已使用大小(KB)
CCSC : 压缩类空间总大小(KB)
CCSU : 压缩类空间已使用大小(KB)
OC : 老年区空间总大小(KB)
OU : 老年区已使用大小(KB)
YGC : 新生代GC次数
FGC : 老年代GC次数
FGCT : 老年代GC总耗时
GCT : GC总耗时
统计老年代内存使用情况
:
jstat -gcoldcapacity 37367
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
1398272.0 1398272.0 1398272.0 1398272.0 1219 3 0.366 5.178
OGCMN :老年区占用最小空间(KB)
OGCMX : 老年区占用最大空间(KB)
OGC : 当前老年区空间(KB)
OC : 当前老年区空间(KB)
YGC :新生代GC次数
FGC : 老年代GC次数
FGCT : 老年代GC总耗时
GCT : GC总耗时
垃圾回收统计
:
jstat -gcutil 37367
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 20.31 32.01 3.40 96.54 94.33 1219 4.812 3 0.366 5.178
S0 :第一幸存区已使用空间百分比.
S1 : 第二幸存区已使用空间百分比
E : 伊甸区已使用空间百分比
O : 老年区已使用空间百分比
M : 元空间使用百分比
CCS : 压缩类空间使用百分比
YGC : 新生代GC次数
FGC : 老年代GC次数
GCT :GC总耗时
方法编译统计情况
:
jstat -printcompilation 37367
Compiled Size Type Method
12659 6 1 com/google/common/cache/LocalCache$AccessQueue$1 setNextInAccessQueue
Compiled : 已编译方法次数
Size : 最近一次方法编译大小
Type : 最近一次编译方法类型
Method : 最近一次编译方法
jvisualvm
与jconsole类似,可以通过界面方式查看统计分析java程序内存、线程等情况。
如果需要统计远端程序,需要在程序启动添加如下启动参数:
-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
添加远程监控统计:
然后添加JMX连接
,
记住后面需要添加端口号,默认的端口号是1099
JFR
JFR全名为java flight recorder)
,其在jmc中(Java Mission Control),jmc可以直接在控制台输入,就能启动jmc界面,
要想查看jfr可以通过两种方式,
- jcmd JFR.start name=test duration=60s settings=template.jfc filename=output.jfr
上述命令立即启动JFR并开始使用templayte.jfc的配置收集60s的JVM信息,输出到output.jfr中 - 在JVM的启动参数中增加如下参数:-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
以上是关于Linux下常用java问题排查命令工具的主要内容,如果未能解决你的问题,请参考以下文章
Linux下网络排查之ping|traceroute|mtr工具(zz)