监控系统状态
- vmstat 命令,监控系统状态
- 用法 vmstat 1
- 关键的几列:r ,b,swpd,si,so,bi,us,wa
vmstat命令
-
用 w 命令查看系统的负载,当系统的负载值偏高时,
- 比如:数值大于CPU核数,那说明CPU不够用了,就需要去思考是什么原因导致的?我的进程在干什么?有哪些任务在使用CPU呢?
-
vmstat 命令,可以查看到CPU、内存、虚拟磁盘交换分区、I/O(就是你的磁盘)、系统进程等
- 格式 : vmstat 1 表示每一秒动态显示一次
- 数字1表示:每一秒钟动态显示一次
- 结束的时候,按快捷键ctrl+c 将它终止掉
- 格式:vmstat 1 5 表示每一秒显示一次,只需显示五次
- 然后它会自动结束
- 格式 : vmstat 1 表示每一秒动态显示一次
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 681860 692 164808 0 0 7 0 13 15 0 0 100 0 0
[root@localhost ~]# vmstat 1 //表示每一秒动态显示一次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 681860 692 164840 0 0 7 0 13 15 0 0 100 0 0
0 0 0 681836 692 164840 0 0 0 0 19 22 0 0 100 0 0
0 0 0 681836 692 164840 0 0 0 0 16 15 0 0 100 0 0
0 0 0 681836 692 164840 0 0 0 0 14 12 0 0 100 0 0
^C
[root@localhost ~]# vmstat 1 5 //表示每一秒显示一次,只需显示五次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 681836 692 164840 0 0 7 0 13 15 0 0 100 0 0
0 0 0 681812 692 164840 0 0 0 0 19 23 0 0 100 0 0
0 0 0 681812 692 164840 0 0 0 0 15 12 0 0 100 0 0
0 0 0 681812 692 164840 0 0 0 0 14 15 0 0 100 0 0
0 0 0 681812 692 164840 0 0 0 0 15 13 0 0 100 0 0
[root@localhost ~]#
-
这里的信息只需要关注这几列,r列,b列,swpd列,si列,so列,bi列,bo列,us列,wa列
- r 英文单词(run),表示多少个进程处于 run 的状态
- 在排着队,或者在进行中的进程,都属于run 的状态
- b 英文单词(block),表示进程被CPU以外的资源给占用,处于一个等待的状态
- swpd 在磁盘分区的时候,有一个swap空间,当内存不够使用时,可以把内存里的一部分数据临时放到swap空间里去
- 当内存不够的时候,会使用swap空间。
- 当swpd数字不变时,则没有关系;
- 若是数字在持续的变化,那说明你的交换分区和你的磁盘在频繁的交换数据——>这只有一个结果,就是你的内存不够用了
- 当内存不够的时候,会使用swap空间。
- si,so 和swpd是有相关联的,在swpd在频繁的改变,那么你的si,so肯定也是会存在数字变更的
- si 表示有多少个的数据,有多少个块(单位:KB)——>有多少个KB的数据,从swap进入到内存中,这就是si
- so 表示有多少个KB的数据,从内存中出来,就是 so
- si和so的参照物就是——>内存
- bi和bo是跟磁盘是有关系的
- bi 就是从磁盘里出来,进入到内存中去的,这个就是 读 ,表示读的数据量有多少
- bo 就是写入到磁盘里去,这个就是 写 ,表示写的数据量有多少
- 若 bi 和 bo 这两个数值很大的话,就表示磁盘在频繁的读写
- 磁盘i/o相比较CPU、内存也好都是很慢的,有很多的数据在读写,会造成 b列增加,因为有很多进程在等待磁盘,这是一个必然的结果
- 当 bi和bo 值 上 5千 的时候就需要注意了
- us 表示用户态的一些资源,占用CPU的百分比
- 比如,操作系统不可能只运行一个系统, 还会运行系统上的服务 mysql等,这就会占用一部分cpu资源,就会体现在 us 这一部分
- us的数字不会超过 100 ,因为一共就百分百,上面显示的就是百分比
- 当 us 的数字长时间大于50 ,就说明你的系统资源不够了
- sy 表示系统本身的一些进程,服务占用的百分比
- id 表示空闲
- us + sy + id 值 约等于100%
- wa 英文(wait),表示等待CPU的百分比,有多少个进程在等待CPU,若这一列很大,说明CPU不够用—>和b列有点类似
- r 英文单词(run),表示多少个进程处于 run 的状态
-
我们可以通过vmstat 命令,判断出系统的瓶颈在哪里,是CPU不够,还是内存不够,还是磁盘i/o太大,都可以判定出来。