Linux系统内存监控、性能诊断工具vmstat命令详解 | 张戈博客

  • 时间:
  • 浏览:17
  • 来源:我爱搬资源网 - 专注共享唐朝博客活动

最近,郁闷事很糙多,博客也像是进入了便秘期。我我觉得还远远可否 了说放弃的地步,但总有某种 挤没了牙膏的郁闷感。很怀念前有几个月的冲劲和激情,一天都能存好几篇优质草稿。

看来,张戈博客是首次进入瓶颈阶段了!没有律最好的土办法了,先转点基础教程充门面,当然也是为了温故而知新。

vmstat命令是最常见的Linux/Unix监控工具,可否 展现给定时间间隔的服务器的情形值,包括服务器的CPU使用率,内存使用,虚拟内存交换情形,IO读写情形。你这个命令是我查看Linux/Unix最喜爱的命令,另3个是Linux/Unix都支持,二是相比top,我想看过整个机器的CPU,内存,IO的使用情形,而一定会单单看过各个守护应用应用程序的CPU使用率和内存使用率(使用场景不一样)。

一般vmstat工具的使用是通过另3个数字参数来完成的,第另3个参数是采样的时间间隔数,单位是秒,第3个参数是采样的次数,如:

[email protected]:~# vmstat 2 1
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 3498472 315836 3819540    0    0     0     1    2    0  0  0 1000  0

2表示每个两秒埋点一次服务器情形,1表示只埋点一次。

实际上,在应用过程中,让让我们我们我们我们儿会在一段时间内总是监控,想要监控直接结速vmstat就行了,你这个:

[email protected]:~# 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 381961000    0    0     0     1    2    0  0  0 1000  0
 0  0      0 3499584 315836 381961000    0    0     0     0   88  158  0  0 1000  0
 0  0      0 3499708 315836 381961000    0    0     0     2   86  162  0  0 1000  0
 0  0      0 3499708 315836 381961000    0    0     0    10   81  151  0  0 1000  0
 1  0      0 3499732 315836 381961000    0    0     0     2   83  154  0  0 1000  0

这表示vmstat每2秒埋点数据,总是埋点,直到我结速守护应用应用程序,这里埋点了5次数据我就结速守护应用应用程序。

好了,命令介绍完毕,结速实战讲解每个参数的意思。

①、Linux 内存监控vmstat命令输出分成3个每项:

(1)守护应用应用程序procs: 
    r:在运行队列中守候的守护应用应用程序数 。
    b:在守候io的守护应用应用程序数 。


(2)Linux 内存监控内存memoy: 
    swpd:现时可用的交换内存(单位KB)。 
    free:空闲的内存(单位KB)。
    buff: 缓冲去中的内存数(单位:KB)。
    cache:被用来做为高速缓存的内存数(单位:KB)。


(3) Linux 内存监控swap交换页面 
    si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
    so: 从内存交换到磁盘的交换页数量,单位:KB/秒。


(4)Linux 内存监控 io块设备:
    bi: 发送到块设备的块数,单位:块/秒。
    bo: 从块设备接收到的块数,单位:块/秒。


(5)Linux 内存监控system系统: 
    in: 每秒的中断数,包括时钟中断。
    cs: 每秒的环境(上下文)转换次数。


(6)Linux 内存监控cpu中央除理器:
    cs:用户守护应用应用程序使用的时间 。以百分比表示。
    sy:系统守护应用应用程序使用的时间。 以百分比表示。
    id:中央除理器的空闲时间 。以百分比表示。

常见诊断:
1.只要 r 总是大于4 ,且 id 总是小于40,表示中央除理器的负荷很糙
2.只要 bi,bo 长期不等于0,表示物理内存容量太小

②、其中每个参数的意思如下:

r 表示运行队列(就是说有几个个守护应用应用程序真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么守护应用应用程序在跑,当你这个值超过了CPU数目,就会跳出 CPU瓶颈了。你这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的情形很危险。top的负载你这个每秒的运行队列。以后运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b 表示阻塞的守护应用应用程序,你这个越多说,守护应用应用程序阻塞,让让我们我们我们我们儿懂的。

swpd 虚拟内存已使用的大小,以后大于0,表示你的机器物理内存严重不足了,以后一定会守护应用应用程序内存泄露的由于 ,没有你该升级内存了以后把耗内存的任务迁移到某些机器。

free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。

buff   Linux/Unix系统是用来存储,目录后面 有什么内容,权限等的缓存,我本机为宜占用1000多M

cache cache直接用来记忆让让我们我们我们我们儿打开的文件,给文件做缓冲,我本机为宜占用1000多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一每项拿来做文件和目录的缓存,是为了提高 守护应用应用程序执行的性能,当守护应用应用程序使用内存时,buffer/cached会变慢地被使用。)

si  每秒从磁盘读入虚拟内存的大小,以后你这个值大于0,表示物理内存严重不足用以后内存泄露了,要查找耗内存守护应用应用程序除理掉。我的机器内存充沛,一切正常。

so  每秒虚拟内存写入磁盘的大小,以后你这个值大于0,同上。

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和某些块设备,默认块大小是1024byte,我本机上没什么IO操作,就是总是是0,以后我曾在除理拷贝血块数据(2-3T)的机器上看过可否 达到1100000/s,磁盘写入效率差越多140M每秒

bo 块设备每秒发送的块数量,你这个让让我们我们我们我们儿读取文件,bo就要大于0。bi和bo一般一定会接近0,不然就是IO过于频繁,须要调整。

in 每秒CPU的中断次数,包括时间中断

cs 每秒上下文切换次数,你这个让让我们我们我们我们儿调用系统函数,就要进行上下文切换,守护应用应用程序的切换,也要守护应用应用程序上下文切换,你这个值要越小越好,越多了,要考虑调低守护应用应用程序以后守护应用应用程序的数目,你这个在apache和nginx你这个web服务器中,让让我们我们我们我们儿一般做性能测试一定会进行几千并发甚至几万并发的测试,选择web服务器的守护应用应用程序可否 由守护应用应用程序以后守护应用应用程序的峰值总是下调,压测,直到cs到另3个比较小的值,你这个守护应用应用程序和守护应用应用程序数就是比较为宜的值了。系统调用也是,每次调用系统函数,让让我们我们我们我们儿的代码就会进入内核空间,由于 上下文切换,你这个是很耗资源,也要尽量除理频繁调用系统函数。上下文切换次数越多表示你的CPU大每项浪费在上下文切换,由于 CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

us 用户CPU时间,我就是在另3个做加密解密很频繁的服务器上,可否 看过us接近1000,r运行队列达到1000(机器在做压力测试,性能表现不佳)。

sy 系统CPU时间,以后太高,表示系统调用时间长,你这个是IO操作频繁。

id  空闲 CPU时间,一般来说,id + us + sy = 1000,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 守候IO CPU时间。