vmstat含义、别人的监控指标经验总结
类别 |
项目 |
含义 |
说明 |
Procs(进程) |
r |
等待执行的任务数 |
正在等待运行的进程数 |
B |
等待IO的进程数量 |
b:The number of processes in uninterruptible sleep. 处于不可中断睡眠状态的进程数 |
|
Memory(内存) |
swpd |
已使用虚拟内存大小,单位k |
|
free |
剩余的物理内存 |
|
|
buff |
已用的buff大小,对块设备的读写进行缓冲 |
设备和设备之间的缓冲 |
|
cache |
已用的cache大小,文件系统的cache |
cpu和内存之间的缓冲 |
|
Swap |
si |
每秒从交换区写入内存的大小(单位:kb/s) |
从磁盘写到交换区的大小.这个值是一个比率,即每秒读了多少KB. |
so |
每秒从内存写到交换区的大小 |
交换到磁盘的大小.这个值是一个比率,即每秒读了多少KB. |
|
IO |
bi |
每秒读取的块数(读磁盘) |
这个值是一个比率,即每秒读了多少BLOCK |
bo |
每秒写入的块数(写磁盘) |
这个值是一个比率,即每秒写了多少BLOCK. 如果bi、bo值长期不为0,说明内存可能有问题,因为没有使用到缓存(当然,不排除直接I/O的情况,但是一般很少有直接I/O的) |
|
system |
in |
每秒中断数,包括时钟中断 |
这两个值越大,会看到由内核消耗的cpu(即 sy)时间会越多 |
cs |
进程上下文切换次数 |
||
CPU(以百分比表示) |
Us |
用户进程执行消耗cpu时间百分比(user time) |
us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了 |
Sy |
系统进程消耗cpu时间百分比(system time) |
sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。 |
|
Id |
cpu空闲时间(包括IO等待时间)百分比 |
|
|
st
|
steal time。来自于一个虚拟机偷取的CPU时间的百分比。可以忽略。 |
free、vmstat、top“三贱合璧”追查真相
(原文:https://blog.csdn.net/reliveIT/article/details/46000367 )
1. free
当系统出问题,追查至内存的时候,要判定内存是否是异常源,先看free指令数据。
先看交换区swap的使用情况,因为linux的内存机制,当swap不够用的时候,系统会出现假死,当然真的假死的时候,你就看不到了;但是在假死前期,你还是能看到数据,做一些补救工作。如果交换区不正常,则进入vmstat指令(下节);如果正常,则看内存空闲情况,主要关注linux内存机制的free和物理内存的buffers和cached,正常则不用追查,否则进入vmstat做进一步的判断。
当然这里只是列举一般情况的追查,更多的还是要依靠线上经验。
2. vmstat
当交换区不够用的时候,物理内存基本上也到瓶颈了。如果内存基本耗光了,而系统因此被拖的很慢,你就可以看vmstat中swap是否存在大量的读写,假死前期还是能看到大量读写的。如果出现大量交换区读写,说明当前内存瓶颈了,存在大量的换入换出,导致CPU空耗在IO上面。这时候需要恢复系统,则进入top指令。
3. top
top能看到当前进程的实时数据,其实主要就是看谁消耗太多内存资源,判断是否能手动kill然后释放资源的问题。
监控指标
(原文:https://blog.csdn.net/hankerzero/article/details/56520698 )
一般us+sy 在单用户系统中不大于90,在多用户系统中不大于80.
CPU利用率。根据经验来看,用户空间进程占用CPU比例在 65-70%之间,内核(系统)CPU比例在30%-35%之间,空闲比例在0%-5%之间。一般不能超过这个比例,超过这个比例,系统性能就会降低,平均负载升高,这点将会在下面的测试中看到。
进程上下文切换。上下文切换和CPU利用率应该联系起来,如果CPU利用率低,那么上下文切换稍高点也能接受。上下文切换也是需要消耗CPU资源的,频繁的切换必将使得CPU利用率升高。
运行队列中等待运行的进程数。每个CPU核心中等待处理的进程数不应该超过3个线程/进程。如4核心的机器,那么队列的最大值应该不超过12个。
平均负载。平均负载值(load average)是平均每核心CPU的负载应该控制在0.7。最好不要超过1.
一般,我是使用top命令和vmstat命令一起看,top命令可以看到整体情况,也可以看到每个任务消耗资源的情况。使用vmstat命令查看队列中的任务数、进程上下文切换。