1 .linux组件监控
1.1 cpu 监控
1.1.1 top命令详解

行说明:
第1行:显示的是系统运行信息:
系统当前时间(22;02:07)
系统运行了多久时间(4:53)
当前登录用户有1个
系统的平均负载情况:1min、5min、15min(每5秒更新一次)
注意:系统负载值除以cpu核数的值大于3-5时,就表明系统的负载压力已经超高了
第2行:显示的是任务信息:
总共110个进程、1个进程正在占用CPU处于运行状态、105个进程正在休眠中、4个进程停止、0个进程假死(僵尸进程)
第3行:显示的是CPU的运行信息:
0.0 us:表示用户模式下CPU占用比为0.0%
0.0 sy:表示系统模式下CPU占用比为0.0%
0.0 ni:表示改变过优先级的进程的CPU占用比为0.0%
100.0 id:表示空闲状态的CPU占比为100%
0.0 wa:表示因为I/O等待造成的CPU占比为0.0%
0.0 hi:表示硬中断的CPU占比
0.3 si:表示软中断的CPU占比
0.0 st:表示CPU等待虚拟机调度的时间占比,这个指标一般在虚拟机中才会有,在物理机中该值一般维持为0
第4行:显示的是内存的使用信息:
total:表示物理内存的总量
free:表示物理内存的空闲大小
used:表示已使用的物理内存的大小
buff/cache:表示用于缓存的物理内存的大小
avail Mem:表示可供使用的物理内存大小(实际)
第5行:显示的是虚拟内存(swap)的使用信息:
total:表示虚拟内存空间的大小
free:表示空闲的虚拟内存空间的大小
used:表示已使用的虚拟内存空间的大小
列说明:
PID:进程id编号
USER:进程的持有用户
PR:进程运行的优先级,值越小优先级越高,会越早获得CPU的执行权
NI:进程的nice值,表示进程可被执行的优先级的修正值
VIRT:进程使用的虚拟内存总大小,单位为KB
RES:进程使用的并且被虚拟内存换出的物理内存大小,一般也称为常驻内存,单位为KB
SHR:进程使用的共享内存大小,单位为KB
S:进程当前的运行状态:
- D:不可中断的睡眠状态
- R:运行中
- S:休眠中
- T:跟踪/停止
- Z:假死
%CPU:进程运行时CPU的占用比
%MEM:进程使用的内存占用比
TIME+:进程占用的CPU总时长
COMMAND:正在运行的命令
参数
top -p :查看指定进程id的top信息

top -H -p :查看指定进程id的所有线程的top信息

1.1.2 vmstat 详解
vmstat 1 5(vmstat 间隔时间(s) 打印次数)

指标
:r:就绪队列的长度也就是正在运行和等待cpu的进程数(等待的进程数+在运行的进程数)
注意:超过cpu核数时,就可能会出现CPU瓶颈了,在判断时还需要结合cpu使用的百分比一起来看
b:处于不可中断睡眠状态的进程数,目前因等待资源而阻塞运行的进程数(等待io,内存交换,等待cpu资源)
注意:该值过高,就需要检查服务器上IO、内存、CPU等资源是不是出现了瓶颈
free:空闲内存大小
buff:已用的buff内存大小,对块设备(如硬盘)的读写进行缓冲
cache:已用的cache大小,文件系统的cache
si:每秒从交换区写入内存的大小
so:每秒从内存写到交换区的大小
注意:si+so长时间不为零的话,表示用到了虚拟内存,需要看看是不是内存瓶颈,有没有内存泄漏和溢出
bi:每秒读取的数据量,默认大小1024byte
bo:每秒写入的数据量
in:每秒中断数,(同cpu的hi+si)
cs:每秒上下文切换数
注意:in+cs值越来越大,表示内核消耗的cpu越大,cpu出现瓶颈,可以通过相关命令查看各种类型软中断在cpu上积累运行的次数
(命令:cat /proc/softirqs |awk 'NR == 1{printf "%12s%12s%12s\n"," ",$1,$2};NR>1{printf "%12s%12s%12s\n",$1,$2,$3}')

us:表示用户模式下CPU占用比为0.0%
sy:表示系统模式下CPU占用比为0.0%
id:表示空闲状态的CPU占比为100%
wa:表示因为I/O等待造成的CPU占比为0.0%
注意:wa值越大,表示io等待严重,有大批量数据写入或者读写,需要使用磁盘命令查看每秒读写数据,如果每秒读写数据合适,则根据业务优化数据访问量
参数