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

  • 时间:
  • 浏览:24
  • 来源:孤妄资源网_提供好牛娱乐网技术_善恶资源网资讯

最近,气恼事特别多,博客也像是进入了便秘期。我我觉得还远远只能说放弃的地步,但总有你這個 挤都这样牙膏的气恼感。很怀念前几块月的冲劲和激情,一天都能存好几篇优质草稿。

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

vmstat命令是最常见的Linux/Unix监控工具,都可以展现给定时间间隔的服务器的情况汇报值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况汇报,IO读写情况汇报。你你這個 命令是我查看Linux/Unix最喜爱的命令,有另另一个 是Linux/Unix都支持,二是相比top,我要就看整个机器的CPU,内存,IO的使用情况汇报,而都不 单单就看各个多多线程 的CPU使用率和内存使用率(使用场景不一样)。

一般vmstat工具的使用是通过有另另一个 数字参数来完成的,第有另另一个 参数是采样的时间间隔数,单位是秒,第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 100  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 38196100    0    0     0     1    2    0  0  0 100  0
 0  0      0 3499584 315836 38196100    0    0     0     0   88  158  0  0 100  0
 0  0      0 3499708 315836 38196100    0    0     0     2   86  162  0  0 100  0
 0  0      0 3499708 315836 38196100    0    0     0    10   81  151  0  0 100  0
 1  0      0 3499732 315836 38196100    0    0     0     2   83  154  0  0 100  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系统是用来存储,目录后面 有哪几块内容,权限等的缓存,我本机大慨占用100多M

cache cache直接用来记忆大伙打开的文件,给文件做缓冲,我本机大慨占用100多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一累积拿来做文件和目录的缓存,是为了提高 多多线程 执行的性能,当多多线程 使用内存时,buffer/cached会好快地被使用。)

si  每秒从磁盘读入虚拟内存的大小,可能你你這個 值大于0,表示物理内存存在问题用可能内存泄露了,要查找耗内存多多线程 防止掉。我的机器内存丰富,一切正常。

so  每秒虚拟内存写入磁盘的大小,可能你你這個 值大于0,同上。

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和某些块设备,默认块大小是1024byte,我本机上没哪几块IO操作,所以时不时是0,但是 我曾在防止拷贝小量数据(2-3T)的机器上就看都可以达到110000/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运行队列达到100(机器在做压力测试,性能表现不佳)。

sy 系统CPU时间,可能太高,表示系统调用时间长,这类于是IO操作频繁。

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

wt 等待英文IO CPU时间。