zoukankan      html  css  js  c++  java
  • 性能测试监控常用命令(大全)

     1.free命令详解

     

    -b:以Byte为单位显示内存使用情况;
    -k:以KB为单位显示内存使用情况;
    -m:以MB为单位显示内存使用情况;
    -o:不显示缓冲区调节列;
    -s<间隔秒数>:持续观察内存使用状况;
    -t:显示内存总和列;
    -V:显示版本信息

    第一部分Mem行解释:

    total:内存总数;
    used:已经使用的内存数;
    free:空闲的内存数;
    shared:当前已经废弃不用;
    buffers Buffer:缓存内存数;
    cached Page:缓存内存数。

    2 VMSTAT
    2表示每个两秒采集一次服务器状态,1表示只采集一次

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

    
    

    b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

    
    

    swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

    
    

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

    
    

    buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M

    
    

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

    
    

    si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    
    

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

    
    

    bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/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运行队列达到80(机器在做压力测试,性能表现不佳)。

    
    

    sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

    
    

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

    
    

    wt 等待IO CPU时间。

    3. sar命令详解

    Sar -help

    A:所有报告的总和

    -u:输出CPU使用情况的统计信息

    -v:输出inode、文件和其他内核表的统计信息

    -d:输出每一个块设备的活动信息

    -r:输出内存和交换空间的统计信息

    -b:显示I/O和传送速率的统计信息

    -a:文件读写情况

    -c:输出进程统计信息,每秒创建的进程数

    -R:输出内存页面的统计信息

    -y:终端设备活动情况

    -w:输出系统交换活动信息

    CPU资源监控

    每隔10秒采集样本一次采集3次后生成test的一个文件,如果要查看二进制文件test中的内容,需键入如下sar命令:sar -u -f test
     

     all:所有的cpu
     user:用户的级别运行使用 CPU 总时间的百分比。

     nice:用于nice操作,所占用 CPU 总时间的百分比

    system:系统所占cpu的百分比

    iowait:IO所占cpu的百分比

    steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

    idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

    1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

    2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

    3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。

    2. inode、文件和其他内核表监控(我理解文件数量)

    每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:

    sar -v 10 3

    屏幕显示如下:

    17:10:49 dentunusd file-nr inode-nr pty-nr

    17:10:59 6301 5664 12037 4

    17:11:09 6301 5664 12037 4

    17:11:19 6301 5664 12037 4

    Average: 6301 5664 12037 4

    输出项说明:

    dentunusd:目录高速缓存中未被使用的条目数量

    file-nr:文件句柄(file handle)的使用数量

    inode-nr:索引节点句柄(inode handle)的使用数量

    pty-nr:使用的pty数量

    3. 内存和交换空间监控

    例如,每10秒采样一次,连续采样3次,监控内存分页:

    sar -r 10 3

    屏幕显示如下:

    输出项说明:

    kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.

    kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.

    %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.

    kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

    kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).

    %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

    4. iostat 命令详解

    • -C 显示CPU使用情况
    • -d 显示磁盘使用情况
    • -k 以 KB 为单位显示
    • -m 以 M 为单位显示
    • -N 显示磁盘阵列(LVM) 信息
    • -n 显示NFS 使用情况
    • -p[磁盘] 显示磁盘和分区的情况
    • -t 显示终端和CPU的信息
    • -x 显示详细信息
    • -V 显示版本信息

    查看设备使用率(%util)和响应时间(await)

    • rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s
    • wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s
    • r/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/s
    • w/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/s
    • rsec/s: 每秒读扇区数.即 delta(rsect)/s
    • wsec/s: 每秒写扇区数.即 delta(wsect)/s
    • rkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)
    • wkB/s: 每秒写K字节数.是 wsect/s 的一半.(需要计算)
    • avgrq-sz:平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)
    • avgqu-sz:平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).
    • await: 平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
    • svctm: 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)
    • %util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)

     5 netstat 命令详解

    1.netstat  -help(自行查看)

    个人常用的:

    netstat -c>>log.log  持续输出相关信息 放到文件里方便查看 

    netstat -an | grep ssh  , netstat -ap | grep  '22'     关于网络方面的查看都可以使用 netsta进行查看,包括网络堵塞,网络接口,

    
    
  • 相关阅读:
    字符编码、文件处理
    列表、字典、元祖、集合
    数字类型、字符串、列表
    学习python的第一天作业
    python基础day2-函数基础2,2019-6-25
    python基础day2-函数基础,2019-6-25
    python基础day2-文件处理,2019-6-25
    python基础day2-流程控制,2019-6-25
    python基础day2-字典类型已内置方法,2019-6-25
    python基础day2-可变类型与不可变类型,2019-6-25
  • 原文地址:https://www.cnblogs.com/yingfei/p/8484293.html
Copyright © 2011-2022 走看看