- uptime
09:20:31 up 84 days, 17:55, 3 users, load average: 25.34, 10.29, 4.36
Load Average 就是一段时间(1分钟、5分钟、15分钟)内平均Load
- vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 916560 586560 141088 747096 1 1 5 13 1 0 7 1 92 0 0
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间)
wa: 等待IO时间
r 如果长期大于1,说明cpu不足,需要增加cpu。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
- jstat(java虚拟机的内存使用情况)
jstat -option(查看哪项监控的指标) -class 显示加载class的数量,及所占空间等信息 -compiler 显示VM实时编译的数量等信息 -gc 可以显示gc的信息,查看gc的次数,及时间 -gccapacity VM内存中三代(young,old,perm)对象的使用和占用大小 -gccause -gcnew new对象的信息 -gcnewcapacity new对象的信息及其占用量 -gcold old对象的信息 -gcoldcapacity old对象的信息及其占用量 -gcpermcapacity perm对象的信息及其占用量 -gcutil -printcompilation 如:jstat -gc 8672 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 63104.0 65152.0 0.0 3906.9 379712.0 102135.8 699072.0 279404.1 262144.0 95494.6 39 2.000 2 1.027 3.027
- jstack(用来查看某个Java进程内的线程堆栈信息)
jstack pid 可以用来定位最占cpu的java线程正在执行的类 1.jps定位java进程 8672 Bootstrap 2.top -Hp pid定位最占cpu的线程 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8672 jakarta 15 0 2981m 1.3g 9288 S 0.0 16.4 0:00.00 java 8677 jakarta 15 0 2981m 1.3g 9288 S 0.0 16.4 0:01.41 java 8678 jakarta 16 0 2981m 1.3g 9288 S 0.0 16.4 0:01.69 java 3.获得线程id的十六进制码 printf '%x' 8672 21e0 4.jstack pid | grep 21e0
- jmap
jmap option pid 最常用的是查看当前存活对象占用内存的情况。 如:jmap -histo:live > jmap.log um #instances #bytes class name ---------------------------------------------- 1: 1092436 61273432 [C 2: 1101637 44065480 java.lang.String 3: 542083 26019984 java.util.HashMap$Entry 4: 148975 20884952 <constMethodKlass> 5: 148975 17888424 <methodKlass> 6: 27763 16417688 [B 7: 13671 15051640 <constantPoolKlass> 8: 526052 12625248 java.lang.Integer 9: 13671 10527656 <instanceKlassKlass> 10: 17970 10056176 [Ljava.util.HashMap$Entry; 也可以用来dump整个jvm,之后用visualVM等工具分析
jstat分析jvm内存基本情况
jmap分析jvm对象占用情况
jstack分析线程运行情况