如何直观的判断你的Linux系统是否健康
一提到对于查看系统运行的健康状况,可能大多数朋友考虑到的就是查看进程或者打开任务管理器,但是对于应用在真实生产环境中服务器的linux系统来说,以上两种方式都不是最高效的查看方式,那么今天就给大家推荐一个在linux系统中非常实用的关心系统运行健康的方式———— ‘ vmstat ’ 命令。
vmstat命令是非常实用的一种Linux/Unix监控工具,可以直观的浏览到给定的时间间隔的系统运行状态,包括服务器的CPU使用率,内存使用情况,虚拟内存交换情况, 硬盘、内存读写情况。相比top,可以让管理人员看到整个机器的CPU,内存,IO的使用情况,而不仅仅是看到单个进程的CPU使用率和内存使用率。当然也并不是说只用vmstat不用top,实际上两者是应用于不同生产环境当中。
vmstat工具的使用是通过两个数字参数来完成的,第一个参数是给定的时间间隔数,单位是秒,第二个参数是查看的次数。
例如:
1: 给定的时间间隔, 1秒
3: 查看的次数
当然如果不加查看次数的话,会一直监控下去,如果不想监控那就直接停掉vmstat,这也是真实生产环境中常用的操作。
如图中所示,我一直运行vmstat,间隔一秒查看八次,然后停止。
接下来呢就来解释这个命令所显示的所有的参数的含义。
r:运行队列(就是多少个进程真的被分配到CPU),当这个值超过了CPU个数的时候就会出现CPU瓶颈。
B:表示阻塞的进程。
Swpd:虚拟内存已使用的大小,如果大于0就表示设备物理内存不足。
Free : 空闲的物理内存的大小。
Buff :系统中目录内容、权限等级的缓存
Cache : cache直接用来做文件缓冲(linux系统把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时, buffer/cached会很快地被使用。)
Si : 每秒从磁盘读取虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露,需要查找到耗内存较大的进程解决掉。
So : 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同样也表示内存不够使用。
Bi : 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024
Bo : 块设备每秒发送的块数量,bi和bo的值一般都要接近0,不然就是输入输出过于频繁,需要做出调整。
In : 每秒CPU的中断次数,包括时间中断。
Cs :每秒上下文切换次数,例如使用者调用系统函数,就要进行上下文切换。线程的切换,也要进程上下文切换,这个值要越小越好,太大就要考虑调低线程或者进程的数目。
Us :用户CPU时间,运行状态下用户空间的时间。
Sy :系统CPU时间,运行状态下系统空间的时间,如果太高,表示系统调用时间长。
注: us+sy=进程时间(cpu时间)