1 内存:
free 命令查看
2 CPU
- 查看负载 ,通过top 或者uptime 来查看。对于平均负载来说,理想值是为CPU核数。
uptime 结果
17:25:14 up 320 days, 3:15, 2 users, load average: 0.11, 0.24, 0.28
当前时间 当前运行时间 有几个用户登录 负载 1分钟负载 5分钟负载 15 分钟过负载
平均负载含义:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数
当负荷达到5.0,就表明你的系统有很严重的问题,平均负载并不等于CPU使用率。平均负载升高有以下几种可能:
1 平均负载高有可能是 CPU 密集型进程导致的;
2 平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 更繁忙了;
3 当发现负载高的时候,你可以使用 mpstat、pidstat,iostat 等工具,辅助分析负载的来源
-
查看CPU信息
-
通过查看/proc/cpuinfo 可以查看CPU信息
-
cat /proc/cpuinfo | grep 'model name' | wc -l 可以查看CPU核数
-
3 磁盘
top中 %CPU列,有一个wa指标,表示等待io操作占整体的CPU百分比,比列越高,说明CPU等待io的时间越多,说明需要进行io 优化
df
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
du
常用 : du -sh ./* 显示当前文件夹下所有目录信息
可以查看某个文件或某个目录的所占空间
-h 以人类的方式显示
-s 显示总计,不显示文件大小
--max-depth=1 查看当前目录下一级子文件和子目录占用的磁盘容量,如果不加这个选项的话,会递归的吧所有目录都列出来,很恶心
iostat (只能看到全局)
tps 磁盘当前每秒随机读写的操作,后面的是当前磁盘每秒的写入大小与读大小
iotop
可以查看每个进程对应的io 情况
stress 可以模拟想磁盘插入数据,来进行检测
4 虚拟内存
vmstat 是虚拟内存统计,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析
vm delay count delay 表示间隔时间,count表示显示次数,如果都不加的话,只显示一条
pidstat 用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况.
没有任何参数显示所有的。
-w 显示进程上下文切换信息
-p 显示指定的进程id
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
5 查看进程以及线程情况
1 ps :
ps aux 可以查看所有运行的进程
-mp pid -o THREAD,tid,time 可以查看pid对应的所有线程,以及每个线程的具体情况
-T -p pid 列出进程所有的线程,相当于上述的简化版,只有tid,没有其他的
2 top (推荐使用,比较简单)
top -H -p pid ,可以动态的查看, 结果的pid 即线程id
3 /proc/pid/status
可以查看进程详细信息
6 java
1 jstack pid
堆栈跟踪工具,用于生成当前时刻的线程快照。可以定位线程出现的问题。
可以查看当前堆栈信息,可以查看线程使用情况。 可以使用 grep grep tid -A30 来获取指定的信息,这里的tid需要转化为16进制。可以使用 printf '%0x' 123 来获取 。 也可以通过Thread.getAllStackTraces方法 来获取,把信息做成一个html页面,就可以动态显示。
2 jmap pid
内存映像工具,可以用于生产对转存快照。
命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。
heap: 显示Java堆详细信息 jmap -heap pid
histo[:live]: 显示堆中对象的统计信息 jmap -histo:live ,如果指定了live选项,那么只会计算活动的对象
clstats:打印类加载器信息 , jmap -clstats pid
finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
dump:<dump-options>:生成堆转储快照,并输出到文件, jmap –dump:file=xxx pid
F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.
help:打印帮助信息
J<flag>:指定传递给运行jmap的JVM的参数
3 jps
显示当前运行到虚拟机上的所有java程序,类似于linux的ps
默认显示pid 和启动类
-m 可以显示具体信息,包括启动时候的参数
4 jstat
jstat -gcutil 16511 1000 10 在1000毫秒内 显示 10次 16511进程 gc信息
虚拟机统计信息监视工具。
gcutil 结果分析
S0: Survivor space 0 utilization as a percentage of the space's current capacity. Survivor0 使用了该总空间的百分比
S1: Survivor space 1 utilization as a percentage of the space's current capacity. Survivo 1
E: Eden space utilization as a percentage of the space's current capacity. 新生代
O: Old space utilization as a percentage of the space's current capacity. 老年代
M: Metaspace utilization as a percentage of the space's current capacity. 元空间/永久代,Java1.8 可能为P
CCS: Compressed class space utilization as a percentage. 压缩类空间利用率为百分比。
YGC: Number of young generation GC events. 新生代从启动为止的GC次数
YGCT: Young generation garbage collection time. 新生代垃圾收集总时间,单位为s
FGC: Number of full GC events. FullGC次数。
FGCT: Full garbage collection time. FullGC总时间
GCT: Total garbage collection time. 垃圾回收总时间。
5 jinfo
java信息配置工具,可以实时查看和调整虚拟机的各项参数。
no option 输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+|-]name 开启或者关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性
6 jvisualvm :
可视化查看java进程信息。
分析dump文件: https://blog.csdn.net/lkforce/article/details/60878295
远程连接: https://www.cnblogs.com/gossip/p/6141941.html
6 分析 Java :
https://mp.weixin.qq.com/s/g8KJhOtiBHWb6wNFrCcLVg