在Linux VPS下运行vmstat命令可以显示系统资源占用的情况。加上一个时间参数可以定期循环输出资源占用情况,比如运行vmstat 2就可以每隔2秒钟输出一次。
vmstat命令输出的各项含义是:
procs部分
r 在运行队列中等待的进程数,如果经常大于CPU的个数,则表示cpu的负荷重
b 在等待io的进程数
memoy部分
swpd 已经使用的交换内存(k表示),这个数越小越好
free 空闲的内存(k表示),越大越好
buff 内核buffers部分的内存(k表示),这些内存也是可用的,所以这个数也是越大越好
cache 内核cache部分的内存(k表示),这些内存也是可用的,所以这个数也是越大越好
swap部分
si 从磁盘swap到内存的总量(k表示),这个数应该是0才对,大于0就表示,发生过swap,内存不够了
so 从内存中swap到磁盘的总量(k表示),这个数应该是0才对,大于0就表示,发生过swap,内存不够了
io部分
bi 从块设备(一般是硬盘)中读入的块总数,这个数越大表示IO越忙
bo 输出到块设备(一般是硬盘)中的块总数,这个数越大表示IO越忙
system部分
in 每秒的中断次数
cs 每秒的进程上下文切换的次数
cpu部分
us CPU在用户态执行花费的时间
sy CPU在内核态执行花费的时间
id CPU空闲的时间
wa CPU等待IO的时间,这个数字大表示IO忙
st 这个我搞不清楚,如果你清楚,请留言告知,谢谢
Procs
-r:
运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
-b:
处于不可中断状态的进程数,常见的情况是由IO引起的
Memory
-swpd: 切换到交换内存上的内存(默认以KB为单位)
如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
-free: 空闲的物理内存
-buff: 作为buffer cache的内存,对块设备的读写进行缓冲
-cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。
Swap
-si: 交换内存使用,由磁盘调入内存
-so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
Io
-bi: 从块设备读入的数据总量(读磁盘) (KB/s),
-bo: 写入到块设备的数据总理(写磁盘) (KB/s)
随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大
System
-in: 每秒产生的中断次数
-cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
Cpu
-us: 用户进程消耗的CPU时间百分比
us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)
-sy: 内核进程消耗的CPU时间百分比
sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
-wa: IO等待消耗的CPU时间百分比
wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
-id: CPU处在空闲状态时间百分比
情景分析
这个vmstat的输出那些信息值得关注?
-Procs r: 运行的进程比较多,系统很繁忙
-Io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
Cpu us: 持续大于50,服务高峰期可以接受
Cpu wa: 稍微有些高
Cpu id:持续小于50,服务高峰期可以接受
阅读(2946) | 评论(0) | 转发(4) |