cpu,内存,网络,硬盘
性能主要监控四大项;
监控CPU:
理论上一个核同一时间只能做一个任务,任务会快速切换,切换的话,操作系统会做这些事情,所以sys系统会比较高
top :
load average: 0.59, 0.47, 0.33 1分钟,10分钟,15分钟 的平均负载,最好不要超过核数
%Cpu(s): 15.4 us, 9.0 sy, 0.0 ni, 75.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st cpu(s)是看的平均情况,按1之后显示每个核的具体情况
us:15.4%是用户所用,用户进程tomcat,nginx,nacos等等
sy: 9.0%是系统所用,系统进程
cpu使用率: 100% - 75.6%(id 空闲的) = 24.4%
hi: hard interrupt 硬中断,硬件引起
si: soft interrupt 软中断,软件引起
wa:wait 等待(一般是网络或者是读写io),等待高的话,磁盘或者网络会造成这个值比较高
KiB Mem : 1882016 total, 74400 free, 808132 used, 999484 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 893620 avail Mem
这个先不说,用内存命令去查看
进程列表:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8270 root 20 0 643740 19304 10320 S 0.7 1.0 3:59.13 YDEdr
10308 root 20 0 157132 5908 4196 S 0.7 0.3 0:12.27 sshd
20565 root 20 0 611584 14180 2404 S 0.7 0.8 4:35.12 barad_agent
6 root 20 0 0 0 0 S 0.3 0.0 0:09.03 ksoftirqd/0
8161 root 20 0 945300 34964 7592 S 0.3 1.9 7:35.11 YDService
越往上则这个的进程的cpu使用的越高
cpu上线不是100%,8个核是800%!超过了100%是很正常的 ,0.7%是所有核加起来一共使用了0.7%
按照内存排序,按大写M即可
按大写P,又回到了按CPU排序
内存监控:
free
free 按k 统计
free -m 按m统计 (一般用这个)
free -g 按g统计
一共1837M
used:已经使用了790M
free: 空闲的物理内存的大小 81M,就只空闲了81M了
buff/cache: 965M,
avalible : free +部分buff/cache的内存 ,表示用户真正可以使用的内存数!一般看这个就知道真正可以用多少
1837 = 790 +81+ 965 (差不多等于)
swap:交换分区
磁盘里面的一个空间,磁盘里面的空间,充当临时内存。一般情况下不会用swap,内存不够用了,操作系统才会用swap
1、长时间不用的进程转移到swap,腾出来的内存给人家刚刚申请去用,老的给新的。
2、如果又要用了,又从磁盘转移到内存
内存 转移到硬盘 称为:swap in
磁盘 转移到内存 称为swap out
如果频繁进行swap操作,说明了内存不够用了,长时间swap,则会影响服务器性能
磁盘监控:iostat
Iostat -x -k 1 -x 显示扩展的数据 -k 显示kb 1 每秒钟刷新一次
上面的cp那栏不用看,因为这个命令不是用来看cpu的
rkb/s 表示每秒读取的字节数,可以实时展示
wkb/s 表示每秒写入的字节数 ,可以实时展示
%util 表示繁忙度 磁盘读写怎么样,直接看util,最好不要超过90%
df -h 看磁盘
vmstat 综合监控工具
vmstat 1 每秒刷新一次
通常一般用这个命令看swap,如果si,so比较多,就是内存不够了,其他的指标可以用别的命令看
dstat 超级监控工具,是一个全能工具,监控cpu,内存,ip,磁盘,并且支持实时刷新,一个命令监控所有
先安装;
yum install -y dstat
dstat --help 查看帮助
比较常用组合 :
dstat -tcmnd --disk-util
简单案列分析:
通过分析,磁盘读写看不出问题,到那时我们得出util,也就是磁盘的io繁忙度很高,这里肯定有问题,磁盘出现了性能问题吗?不一定,我们又执行了一个命令
si,so长期不为0,说明了内存不够,但是第一张图还是有很大的空闲的,为什么会发生swap呢?,因为发生swap,磁盘读写非常多,非常频繁,造成了cpu一致在操作磁盘,cpu的空闲率达到了20%多。说明了:
内存不足的情况下,会引发swap,swap会引发次磁盘的繁忙度升高,磁盘的繁忙度升高又会引起cpu的wait占用率高。说明组件之间会相互影响,看到某个现象并不是真正原因!
其实,我们这是个docker项目,宿主机给它分配了一个内存,通过docker的监控内存,我们发现内存已用3.99个gb了,内存不够了,但磁盘是公用的,所以docker容器一直和宿主机在进行swap,所以导致了磁盘读写的繁忙度高,所以导致了cpu的空闲高!这是根本原因