vmstat 1:表示每隔一秒钟采集、展示一次数据,要想停下来Ctrl+d即可,如果想指定采集次数,则使用“vmstat 1 10",表示每隔一秒钟采集一次数据,总共采集10次。
procs:
r:表示除了cpu资源外已经准备好的进程队列,即等待可用cpu的进程数,获取该值用于判断系统负荷情况,如果长时间该值超过处理器硬件线程个数一倍,则需要关注,系统可能面临高负载状况,如果长时间是处理器硬件线程数的三、四倍,则需要立即关注并采取行动,此时系统已经能感觉到明显的性能下降,要么增加cpu,要么分析当前系统进程状况。
附注:硬件线程个数的概念,举个例子,双核四线程的cpu,表示有2个物理cpu,但是每个cpu有两个逻辑上的线程,对操作系统而言,它认为有4个cpu。
b:表示阻塞的进程队列,阻塞的时候进程还在内存(和挂起不一样,注意区别),但是需要额外的资源(例如IO)等。
cpu:
us:表示用户态cpu使用率,即应用获得cpu执行时间占用cpu总时间的百分比,占比高并不表示系统瓶颈。
sy:表示系统态cpu使用率,常指系统调度占用cpu总时间的百分比。
id:表示系统空闲时间百分比。
获得这三项数据的目的是为了分析、减少sy的百分比,实际上要判断导致应用异常需要综合很多监控数据,具体靠经验。
swap:
si:每秒从磁盘读入虚存(swap)的大小,如果该值较大,则表示系统内存资源紧张,需要频繁的进行内存交换。
so:每秒从内存写入到虚存的大小,和si一致,但是要注意两个值是配合使用,当两个值都较大的时候才真正表示内存资源紧张。
io:
bi:块设备(磁盘)每秒接收的块数量,对应IO中的写操作,太大表示IO操作频繁。
bo:块设备每秒输出的块数量,对应IO中的读操作,太大表示IO操作频繁。
system:
in:每秒cpu中断次数。
cs:每秒上下文切换次数,例如调用系统函数、线程上下文切换、进程切换都会导致该值增大,上下文切换会浪费cpu时钟,配合in值,因此如果该值长时间太大,就需要考虑应用中的线程数是否开启太多等。
附注:
本文如有错漏,烦请不吝指正,谢谢!