企业网站建设推广,自己做的网站视频播放不了,人力资源网站模板,网站建设和网页设计pdfvmstat命令是最常见的Linux/Unix监控工具#xff0c;可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率#xff0c;内存使用#xff0c;虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令#xff0c;一个是Linux/Unix都支持#xff0c;二是…vmstat命令是最常见的Linux/Unix监控工具可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率内存使用虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令一个是Linux/Unix都支持二是相比top我可以看到整个机器的CPU,内存,IO的使用情况而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的第一个参数是采样的时间间隔数单位是秒第二个参数是采样的次数如: rootubuntu:~# vmstat 2 1procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2表示每个两秒采集一次服务器状态1表示只采集一次。 实际上在应用过程中我们会在一段时间内一直监控不想监控直接结束vmstat就行了,例如: rootubuntu:~# vmstat 2 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0 这表示vmstat每2秒采集数据一直采集直到我结束程序这里采集了5次数据我就结束了程序。 好了命令介绍完毕现在开始实战讲解每个参数的意思。 r 表示运行队列(就是说多少个进程真的分配到CPU)我测试的服务器目前CPU比较空闲没什么程序在跑当这个值超过了CPU数目就会出现CPU瓶颈了。这个也和top的负载有关系一般负载超过了3就比较高超过了5就高超过了10就不正常了服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大表示你的CPU很繁忙一般会造成CPU使用率很高。 b 表示阻塞的进程,这个不多说进程阻塞大家懂的。 swpd 虚拟内存已使用的大小如果大于0表示你的机器物理内存不足了如果不是程序内存泄露的原因那么你该升级内存了或者把耗内存的任务迁移到其他机器。 free 空闲的物理内存的大小我的机器内存总共8G剩余3415M。 buff Linux/Unix系统是用来存储目录里面有什么内容权限等的缓存我本机大概占用300多M cache cache直接用来记忆我们打开的文件,给文件做缓冲我本机大概占用300多M(这里是Linux/Unix的聪明之处把空闲的物理内存的一部分拿来做文件和目录的缓存是为了提高 程序执行的性能当程序使用内存时buffer/cached会很快地被使用。) si 每秒从磁盘读入虚拟内存的大小如果这个值大于0表示物理内存不够用或者内存泄露了要查找耗内存进程解决掉。我的机器内存充裕一切正常。 so 每秒虚拟内存写入磁盘的大小如果这个值大于0同上。 bi 块设备每秒接收的块数量这里的块设备是指系统上所有的磁盘和其他块设备默认块大小是1024byte我本机上没什么IO操作所以一直是0但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s磁盘写入速度差不多140M每秒 bo 块设备每秒发送的块数量例如我们读取文件bo就要大于0。bi和bo一般都要接近0不然就是IO过于频繁需要调整。 in 每秒CPU的中断次数包括时间中断 cs 每秒上下文切换次数例如我们调用系统函数就要进行上下文切换线程的切换也要进程上下文切换这个值要越小越好太大了要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中我们一般做性能测试时会进行几千并发甚至几万并发的测试选择web服务器的进程可以由进程或者线程的峰值一直下调压测直到cs到一个比较小的值这个进程和线程数就是比较合适的值了。系统调用也是每次调用系统函数我们的代码就会进入内核空间导致上下文切换这个是很耗资源也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换导致CPU干正经事的时间少了CPU没有充分利用是不可取的。 us 用户CPU时间我曾经在一个做加密解密很频繁的服务器上可以看到us接近100,r运行队列达到80(机器在做压力测试性能表现不佳)。 sy 系统CPU时间如果太高表示系统调用时间长例如是IO操作频繁。 id 空闲 CPU时间一般来说id us sy 100,一般我认为id是空闲CPU使用率us是用户CPU使用率sy是系统CPU使用率。 wt 等待IO CPU时间。 转http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html转载于:https://www.cnblogs.com/andy6/p/5968230.html