原文:https://time.geekbang.org/column/article/108582
Linux
top命令
实时显示正在执行进程的 CPU 使用率、内存使用率以及系统负载等信息。其中上半部分显示的是系统的统计信息,下半部分显示的是进程的使用率统计信息。
top -Hp pid
查看具体线程使用系统资源情况
vmstat
多用来观测进程的上下文切换
r:等待运行的进程数;
b:处于非中断睡眠状态的进程数;
swpd:虚拟内存使用情况;
free:空闲的内存;
buff:用来作为缓冲的内存数;
si:从磁盘交换到内存的交换页数量;
so:从内存交换到磁盘的交换页数量;
bi:发送到块设备的块数;
bo:从块设备接收到的块数;
in:每秒中断数;
cs:每秒上下文切换次数;
us:用户 CPU 使用时间;
sy:内核 CPU 系统使用时间;
id:空闲时间;
wa:等待 I/O 时间;
st:运行虚拟机窃取的时间。
pidstat
Sysstat 中的一个组件
通过yum install sysstat 安装该监控组件
用来监测线程的性能
-u:默认的参数,显示各个进程的 cpu 使用情况;
-r:显示各个进程的内存使用情况;
-d:显示各个进程的 I/O 使用情况;
-w:显示每个进程的上下文切换情况;
-p:指定进程号;
-t:显示进程中线程的统计信息。
如:pidstate -p 28557 -r 1 3 (1表示每秒,3表示采样次数)
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页;
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页;
VSZ:虚拟地址大小,虚拟内存使用 KB;
RSS:常驻集合大小,非交换区内存使用 KB。
JDK
jstat
jstat -gc pid
查看堆内存的使用情况
S0C:年轻代中 To Survivor 的容量(单位 KB);
S1C:年轻代中 From Survivor 的容量(单位 KB);
S0U:年轻代中 To Survivor目前已使用空间(单位 KB);
S1U:年轻代中 From Survivor 目前已使用空间(单位 KB);
EC:年轻代中 Eden 的容量(单位 KB);
EU:年轻代中 Eden 目前已使用空间(单位 KB);
OC:Old 代的容量(单位 KB);
OU:Old 代目前已使用空间(单位 KB);
MC:Metaspace 的容量(单位 KB);
MU:Metaspace 目前已使用空间(单位 KB);
YGC:从应用程序启动到采样时年轻代中 gc 次数;
YGCT:从应用程序启动到采样时年轻代中 gc 所用时间 (s);
FGC:从应用程序启动到采样时 old 代(全 gc)gc 次数;
FGCT:从应用程序启动到采样时 old 代(全 gc)gc 次数;
GCT:从应用程序启动到采样时 gc 用的总时间 (s)。
**jstack pid **
线程堆栈分析工具
jmap
查看堆内存初始化配置信息以及堆内存的使用情况。
jmap -histo[:live] pid
查看堆内存中的对象数目、大小统计直方图,如果带上 live 则只统计活对象。