1.简介vmstat命令:用于获取进程、内存、页交换空间、CPU活动等信息。此信息反映了系统上的负载。二、使用vmstat参数用法vmstat[-a][-n][-Sunit][delay[count]]vmstat[-s][-n][-Sunit]vmstat[-m][-n][delay[count]]vmstat[-d][-n][delay[count]]vmstat[-pdiskpartition][-n][delay[count]]vmstat[-f]vmstat[-V]-a:Showactiveandinactivememory-f:显示自系统启动以来fork的数量。-m:显示slabinfo-n:每个字段名在开头只显示一次。-s:显示与内存相关的统计信息和各种系统活动量。delay:刷新间隔。如果未指定,将只显示一个结果。计数:刷新次数。如果不指定刷新次数,但指定了刷新间隔,则刷新次数为无限次。-d:显示与磁盘相关的统计信息。-p:显示指定磁盘分区统计信息-S:使用指定单位显示。参数为k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位是K(1024字节)-V:显示vmstat版本信息。3、查看vmstat信息的常用命令如下:vmstat1101表示每1秒收集一次服务器状态,10表示只收集10次。procs(进程):r:运行队列中的进程数,这个值也可以决定是否增加CPU。(长期大于1),当这个值超过CPU个数时,就会出现CPU瓶颈。这也和top的负载有关。一般负载超过3就比较高,超过5就高,超过10就异常,服务器的状态很危险。b:等待IO的进程数,以及被阻塞的进程数。Memory(内存):swpd:使用虚拟内存大小,如果大于0说明你机器的物理内存不足,如果不是程序内存泄露的原因,那么你应该升级内存或者迁移把耗内存的任务交给其他机器。注意:如果swpd的值不为0,但SI和SO的值长期为0,这种情况不会影响系统性能。free:空闲物理内存大小buff:用于缓冲的内存大小,inux/Unix系统用于存储,目录里有什么,权限等cachecache:用于缓存的内存大小(这里是Linux/Unix的巧妙之处目的是利用部分空闲的物理内存作为文件和目录的缓存,提高程序执行的性能。当程序使用内存时,buffer/cached会被快速使用。)注意:如果cache的值为时大,说明缓存中有很多文件。如果能缓存经常访问的文件,磁盘读IObi就会很小。swap:si:每秒从swap区写入内存的大小,从磁盘传输到内存。如果这个值大于0,说明物理内存不够或者内存泄露了。需要找到耗内存的进程并解决。so:每秒写入交换区的内存大小,从内存传输到磁盘,如果这个值大于0,同上。注意:当内存足够时,这两个值都是0。如果这两个值长期大于0,会影响系统性能,会消耗磁盘IO和CPU资源。有些朋友看到空闲内存(free)很少或者接近于0的时候,就认为是内存不够用了。不能只看这个,还要结合si等。如果free很少,但是si和so也很少(大部分时候为0),那么不用担心,此时不会影响系统性能。IO:(当前linux版本的块大小为1kb)bi:每秒读取的块数,块设备每秒接收到的块数,这里的块设备指的是本机上的所有磁盘和其他块设备系统,默认的块大小为1024byte。bo:Thenumberofblockswrittenpersecond,块设备每秒发送的块数,比如我们读一个文件,bo必须大于0。bi和bo一般都接近0,否则IO过于频繁,需要调整。注意:读写随机磁盘时,这两个值越大(比如超过1024k),CPU等待IO的值就会越大。System:in:每秒中断次数,包括时钟中断。cs:每秒上下文切换的次数。每秒上下文切换的次数。比如我们在调用一个系统函数的时候,需要进行上下文切换、线程切换、上下文切换。值越小越好。如果太大,考虑减少线程或进程的数量。比如在apache、nginx等web服务器中,我们在做性能测试的时候一般会进行几千甚至几万的并发测试。选择web服务器的过程可以从进程或线程的峰值下调,进行压测,直到cs达到一个比较小的值,进程数和线程数是一个比较合适的值。系统调用也是如此。每调用一次系统函数,我们的代码就会进入内核空间,从而产生上下文切换。这是非常耗费资源的,我们应该尽量避免频繁调用系统函数。太多的上下文切换意味着你的大部分CPU都浪费在上下文切换上,导致CPU做正事的时间变少,CPU没有得到充分利用,这是不可取的。注意:以上2个值越大,内核消耗的CPU时间就越多。CPU(以百分比表示):us:用户进程执行时间百分比(usertime)注:当us的值比较高时,表示用户进程消耗的CPU时间较多,但如果某个进程的使用率超过50%时间长了,那么就要考虑优化程序算法或者提速了。sy:内核系统进程执行时间百分比(系统时间),系统CPU时间,如果过高说明系统调用时间长,比如频繁的IO操作注意:当sy的值很高时说明系统内核消耗更多的CPU资源。不是良性行为,我们应该检查原因。wa:IO等待时间的百分比,等待IO的时间。当wa的值很高时,说明IO等待很严重。这可能是磁盘上大量的随机访问造成的,也可能是磁盘出现了瓶颈。注意:当wa的值很高时,表示IO等待严重。这可能是磁盘上大量的随机访问造成的,也可能是磁盘出现了瓶颈(块操作)。id:空闲时间百分比,空闲CPU时间,一般来说,id+us+sy=100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率wt:等待IO的CPU时间。
