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的内存 ,表示用户真正可以使用的内存数!一般看这个就知道真正可以用多少

buff:linux对内存管理的一种机制,磁盘操作慢,内存操作快。有一些操作操作磁盘时比较慢,比较拖后退,那么本来这个事情交给磁盘做的,那么我把数据临时写到内存了,cpu就不会空等待了,操作系统会定时将操作系统同步到磁盘了,我们就叫它Buff,存 的是即将写到磁盘中的数据,中文叫缓存!
 
cache: 从磁盘中读取数据,由于读取比较慢,内存比较快,那么写到临时内存,下一次直接从内存里读取就快点了,中文名叫缓冲!
 
两者都是占的内存空间,Linux系统会利用空闲内存,创造缓存空间,主要提高性能,如果内存不够了,Buff/cache一部分缓存释放掉,你就可以利用了,avalible表示真正可以使用的内存!
 

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的空闲高!这是根本原因

 

posted @ 2021-05-18 17:23  JakeTan  阅读(176)  评论(0编辑  收藏  举报