zoukankan      html  css  js  c++  java
  • Linux性能检测命令

    一、vmstat命令描述                                                                             

        最常见的Linux/Unix监控工具想必是vmstat了,vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况,进程活动进行监控。vmstat是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析(结合top命令使用)。

        vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。

    二、vmstat命令                                                                                    

    • 命令格式   

    vmstat [-a] [-n] [-S unit] [delay [ count]]

    vmstat [-s] [-n] [-S unit]

    vmstat [-m] [-n] [delay [ count]]

    vmstat [-d] [-n] [delay [ count]]

    vmstat [-p disk partition] [-n] [delay [ count]]

    vmstat [-f]

    vmstat [-V]

    • 命令功能

            用来显示虚拟内存的信息

    • 命令参数

    -a:显示活跃和非活跃内存

    -f:显示从系统启动至今的fork数量 。

    -m:显示slabinfo

    -n:只在开始时显示一次各字段名称。

    -s:显示内存相关统计信息及多种系统活动数量。

    delay:刷新时间间隔。如果不指定,只显示一条结果。

    count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

    -d:显示磁盘相关统计信息。

    -p:显示指定磁盘分区统计信息

    -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

    -V:显示vmstat版本信息。

    三、vmstat命令使用                                                                             

        1、虚拟内存使用情况

        命令:vmstat 5 10,5表示每5秒采集一次服务器状态,10表示 采集10次

        

        输出项说明

    类别 子项   说明 备注
    procs r 运行队列中等待cpu时间片的进程数量 如果长期大于1,说明cpu不足。
    b 在等待资源的进程数(阻塞的进程) 比如正在等待I/O、或者内存交换等。
    memory  swpd 虚拟内存已使用的大小即切换到内存交换区的内存数量(k表示)

    如果swpd的值不为0(表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉),或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 。

    free 当前的空闲页面列表中内存数量(k表示)  
    buff 用作缓冲的内存大小 一般对块设备的读写才需要缓冲。
    cache  作为page cache的内存数量,一般作为文件系统的cache 用来记忆我们打开的文件,给文件做缓冲。如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 
    swap si 每秒从交换区读入虚拟内存的大小  
    so 每秒虚拟内存写入交换区的大小  
    io bi 每秒从块设备接收到的块数,即读块设备。(每秒kb)  
    bo 每秒发送到块设备的块数,即写块设备。(每秒kb)  
    system in 每秒中断数,包括时钟中断  
    cs 每秒上下文切换数  如当调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目。
    cpu us 用户进程所花费 CPU 时间的百分比 us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 
    sy 内核进程所花费的cpu时间的百分比  us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 
    id cpu处在空闲状态的时间百分比  
    wa IO等待消耗的CPU时间百分比 wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。  

         2、显示活跃和非活跃内存

         命令:vmstat -a 5 10

          

    说明:

    使用-a选项显示活跃和非活跃内存时,所显示的内容除增加inact和active外,其他显示内容与例子1相同。

    字段说明:

    Memory(内存):

    inact: 非活跃内存大小(当使用-a选项时显示)

    active: 活跃的内存大小(当使用-a选项时显示)

         3、查看内存使用的详细信息

          命令:vmstat -s

          

    说明:

    这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。

         4、查看磁盘的读/写信息

         命令:vmsat -d

         

    说明:

    这些信息主要来自于/proc/diskstats.

    merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作。

         5、查看某块磁盘分区的读/写信息

         命令:df,vmstat -p xxx

         

    说明:

    这些信息主要来自于/proc/diskstats。

    reads:来自于这个分区的读的次数。

    read sectors:来自于这个分区的读扇区的次数。

    writes:来自于这个分区的写的次数。

    requested writes:来自于这个分区的写请求次数。

     四、NetWork IO                                                                                      

        1、UDP

         对于UDP服务,查看所有监听的UDP端口的网络情况, 接收、发送缓冲区没有长时间等待处理的网络包;RecvQ、SendQ为0,或者没有长时间大于0的数值是比较正常的。

         命令:watch netstat -lunp

        

         对于UDP服务,查看丢包情况网卡收到了,但是应用层没有处理过来造成的丢包

         命令:watch netstat -su

         

        2、TCP

          不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。所以,tcp而言更多的专注重传率。

         cat /proc/net/snmp | grep Tcp

        

     由于本人经验有限,文章中难免会有错误,请浏览文章的您指正或有不同的观点共同探讨!

  • 相关阅读:
    深入理解MyBatis中的一级缓存与二级缓存
    Spring-mvc文件的上传和下载
    Spring-mvc的拦截器和异常通知
    各种配置文件
    设计模式---代理模式
    dom4j读取xml和dtd的使用方式
    几种不同的路径
    常用正则表达式
    请求转发和重定向的对比
    跨浏览器检测某个节点是不是另一个节点的后代
  • 原文地址:https://www.cnblogs.com/exceptioneye/p/4927509.html
Copyright © 2011-2022 走看看