性能测试之三——资源监控的方法

目录

一、如何定位CPU性能问题?

1、top命令

2、ps命令

3、sar命令

二、如何定位内存性能问题?

1、free

2、pmap

3、vmstat

三、如何监控网口流量?

1、dstat

四、如何进行实时监控?

 crond相关资料


一、如何定位CPU性能问题?

1、top命令

        一般会关注是哪个进程,甚至哪个线程占用的CPU比较高。可以使用如下命令知道进程,并显示线程。

        top –H –p xxxx(进程号)

        us  用户空间占用CPU百分比,如果这个值较高则需要关注。

        sy  内核 空间占用CPU百分比。

        ni  用户进程空间内改变过优先级的进程占用CPU百分比。

        id  空闲CPU百分比。

        wa  等待输入输出的CPU时间百分比,如果这个数值长期维持在较高水平,说明磁盘I/O可能是性能瓶颈。

        hi 表示服务中硬件中断花费的时间。

        si 表示服务中软件中断花费的时间。

        st 表示通过hypervisor虚拟机偷走的时间。

        中断:包括硬中断与软中断。硬中断对性能有更加不利的影响。较高的中断值可能有软件瓶颈。

2、ps命令

        ps –aux 查看进程的详细情况,包括CPU使用情况。

        ps –eLf | grep xxxx(进程ID) 查看xxxx 进程的各线程的CPU占用情况。

3、sar命令

        sar手机包括CPU利用率、上下文切换和终端速率,页换入和页换出速率,共享内存的使用情况,缓冲区使用情况以及网络使用情况。

sar 2 5 //每隔2秒,显示5次CPU使用情况
sar -v 3 5 //每3秒采样一次,连续采样5次,观察核心表状态

sar -d 30 5 //每30秒采样一次,连续采样5次,报告设备使用情况

sar -b 10 3 //每30秒采样一次,连续采样5次,报告缓冲区的使用情况

二、如何定位内存性能问题?

1、free

        在命令行输入:free,有如下图显示:

        在Mem行有5列,每列的参数意义如下:

        total:总计物理内存的大小。

        used:已使用的物理内存大小。

        free:可用的物理内存大小。

        Shared:多个进程共享的内存总额。

        Buffers/cached:缓存大小。

        在-/+ buffers/cached行是应用程序使用的内存情况,有两列:

        used: 应用程序已使用了的内存大小。

        free: 应用程序还可以使用的内存。如果该值较小,表示内存不足。

        在SWAP行是磁盘交换分区内存的参数,共有3列:

        total:总计交换分区内存的大小。

        used:已使用的交换分区内存大小。

        free:可用的交换分区内存大小。

2、pmap

        该命令可以查看进程详细的内存申请情况,在定位内存泄露的时候,可以多次执行该命令,然后对比,查找内存的瓶颈。

  • 常用执行命令

        pmap –d <pid>

        输出列中的DEVICE描述如下:

        fd:01:应用程序私有的动态库映射的内存

        00:00:进程动态分配的内存,堆栈空间

        08:02:操作系统自带的动态库占用的内存

3、vmstat

        vmstat命令提供了对进程、内存、页面I/O块和CPU等信息的监控,vmstat可以显示检测结果的平均值或者取样值,取样模式可以提供一个取样时间段内不同频率的监测结果。

  • process(procs)

        r:等待运行时间的进程数量

        b:处在不可中断睡眠状态的进程

        w:被交换出去但是仍然可以运行的进程,这个值是计算出来的

  • memory

        swpd:虚拟内存的数量

        free:空闲内存的数量

        buff:用做缓冲区的内存数量

  • swap

        si:从硬盘交换来的数量

        so:交换到硬盘去的数量

        如果内存碎片比较多,那么swap的值就比较大。

  • IO

        bi:向一个块设备输出的块数量

        bo:从一个块设备接受的块数量

  • system

        in:每秒发生的中断数量, 包括时钟

        cs:每秒发生的context switches的数量

  • cpu(整个cpu运行时间的百分比)

        us:非内核代码运行的时间(用户时间,包括nice时间)

        sy:内核代码运行的时间(系统时间)

        id:空闲时间,在Linux 2.5.41之前的内核版本中,这个值包括I/O等待时间;

        wa:等待I/O操作的时间,在Linux 2.5.41之前的内核版本中这个值为0

        vmstat 还提供了大量附加的参数。例如:

        m:显示内核的内存利用率。

        a:显示内存页面信息,包括活跃和不活跃的内存页面。

        n:显示报头行,这个参数在使用取样模式并将命令结果输出到一个文件时非常有用。

三、如何监控网口流量?

1、dstat

        常用命令:dstat -N [网口名]

        如下图,enp1s0f0网口正在接收数据,速度大改为100MB/s:

四、如何进行实时监控?

        可以将以上几个监控工具写到脚本里,结合crond定时触发,完成实时监控的功能。

      crond相关资料:

        https://blog.csdn.net/wxt_hillwill/article/details/72909684

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值