性能测试必看系列之Jmeter:硬件性能监控指标

硬件性能监控指标

一、性能监控初步介绍

性能测试的主要目标

1.在当前的服务器配置情况,最大的用户数

2.平均响应时间ART,找出时间较长的业务

3.每秒事务数TPS,服务器的处理能力

性能测试涉及的内容

1.客户端性能测试:web前端性能、app性能

2. 网络性能测试

3. 服务器应用程序性能

4. 服务器硬件性能

5. 数据库的性能

二、linux性能监控--CPU

CPU相关的指标

1. CPU使用率:sys% user%(系统的cpu使用率和用户的cpu使用率)

2. 队列长度

1. 查看CPU使用率

使用vmstat 或top 查看CPU使用情况 us 和sy

标准: cpu使用率: us+sy不能超过75%,偶尔可以100%

vmstat 5:每5秒采集一次

 vmstat 主要参数说明

  • r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
  • b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的
  • swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
  • free 空闲的物理内存的大
  • 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 每秒上下文切换次数,上下文切换次数过多表示你的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时间。

2.查看队列长度

使用vmstat -5 执行,查看 r列的数据

标准:队列长度不能超过2,有队列的产生,或者CPU处理不过来

r值<=2

r值在[3,5]

r值在(5,10]

r值在 >10

3.查看CPU使用较大的进程

ps -aux查看进程的CPU使用情况

目的:找出高CPU的进程

ps auxw|head -1;ps auxw|sort -rn -k3|head -1  (查看CPU使用较大的前10个进程)

三、linux性能监控--内存

核心指标

1. 可用物理内存的比例

2. 是否使用了虚拟内存

3.是否存在内存泄漏

1. 查看物理内存的使用情况

free命令查看使用情况

标准:linux的可用物理内存可为0,全部用完,只要不使用虚拟内存

2.查看是否使用了虚拟内存

方法1: vmstat 查看si so列

标准: si 和so大于0,表示物理内存不够用或者内存泄露了

方法2: sar –W 10 3  (10和3代表了每个10秒监控一次,总共监控3次)

标准:值大于0,就说明内存已经饱和了

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

3. 找出高内存使用的进程

3.1内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

3.2 虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head

%MEM 进程的内存占用率

VSZ 进程所使用的虚存的大小

RSS 进程使用的驻留集大小或者是实际内存的大小

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

四、linux性能监控--硬盘IO的监控

核心指标

1.硬盘的使用率

2.物理硬盘驱动器忙于读或写入的时间

工具:iostat、iotop、pt-ioprofile

1. 查看硬盘的使用率: df -lh

 2. 查看具体的那个硬盘的IO较高:

使用iostat 工具来查

ostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该 命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所 需的统计信息

安装iostat 安装命令: yum install sysstat

语法: iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device
[...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以K为单位显示
-m 以M为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS使用情况
-p 可以报告出每块磁盘的每个分区的使用情况
-t 显示终端和CPU的信息 -x 显示详细信息

iostat -d -k 2

参数 -d 表示,显示设备(磁盘)使用状态;-k 某些使用 block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

iostat -x 5 查看:%util

%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒);

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

标准:物理硬盘驱动器忙于读或写入的时间 40% 60% 80%

3. 查看哪个进程耗IO比较高

使用iotop 命令: 查询出较大的IO 的进程
iotop是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息
安装:yum install iotop
查看:iotop 按 o 只显示有磁盘 IO 活动的进程

语法:iotop [OPTIONS]

  • --version #显示版本号
  • -h, --help #显示帮助信息
  • -o, --only #显示进程或者线程实际上正在做的I/O,而不是全部的,可以随时切换按o
  • -b, --batch #运行在非交互式的模式
  • -n NUM, --iter=NUM #在非交互式模式下,设置显示的次数,
  • -d SEC, --delay=SEC #设置显示的间隔秒数,支持非整数值
  • -p PID, --pid=PID #只显示指定PID的信息
  • -u USER, --user=USER #显示指定的用户的进程的信息
  • -P, --processes #只显示进程,一般为显示所有的线程
  • -a, --accumulated #显示从iotop启动后每个线程完成了的IO总数
  • -k, --kilobytes #以千字节显示
  • -t, --time #在每一行前添加一个当前的时间

4. 定位来源文件

pt-ioprofile定位负载来源文件,通过iotop或ps找出负载较高的进程

安装: 下载地址https://www.percona.com/downloads/percona-toolkit/LATEST/

CentOS 7下安装:

yum -y install https://www.percona.com/downloads/perconatoolkit/3.0.1/binary/redhat/7/x86_64/percona-toolkit-3.0.1-1.el7.x86_64.rpm

使用:

命令格式:pt-ioprofile --profile-pid=xxx

     pt-ioprofile --profile-pid=xxx --cell=size

pt-ioprofile --profile-pid=需要监控的PID --cell=size

pt-ioprofile的原理是对某个pid附加一个strace进程进行IO分析。

步骤1:iotop 查询出高io的pid
步骤2:pt-ioprofile --profile-pid=需要监控的PID --cell=size

对于定位问题更有用的是通过IO的吞吐量来进行定位。

使用参数 --cell=sizes,该参数将结果已 B/s 的方式展示出来

pt-ioprofile --profile-pid=需要监控的PID --cell=sizes

五、linux性能监控--网络监控

网络的监测是所有 Linux 子系统里面最复杂的,有太多的 因素在里面,比如:延迟、阻塞、冲突、丢包等,更糟的是与 Linux 主机相连的路由器、交换机、无线信号都会影响到整体 网络并且很难判断是因为 Linux 网络子系统的问题还是别的设 备的问题,增加了监测和判断的复杂度。

核心指标

1. 网络带宽是否够用
2. 丢包率、错误重传
3. 网络延迟/堵塞
4. 网络错误

监控网络操作步骤

1.查每秒接受和发送的数据量,检查当前带宽是否够用

使用nicstat 工具查看网卡的利用率

nicstat可以提供更加全面的网卡信息。

  • 显示TCP流量统计
  • 显示UDP流量统计
  • 报告进出网卡的字节数
  • 报告进出网卡的数据数
  • 报告网卡利用率
  • 报告NIC饱和度和其他信息

nicstat下载

cd /usr/local/src

wget http://nchc.dl.sourceforge.net/project/nicstat/nicstat-1.92.tar.gz

nicstat安装

tar -xzf nicstat-1.92.tar.gz
cd nicstat-1.92
cp Makefile.Linux Makefile
make

nicstat使用

./nicstat.sh

Time列:表示当前采样的响应时间

lo and eth0 : 网卡名称。
rKB/s : 每秒接收到千字节数。
wKB/s : 每秒写的千字节数。
rPk/s : 每秒接收到的数据包数目。
wPk/s : 每秒写的数据包数目。
rAvs : 接收到的数据包平均大小。
wAvs : 传输的数据包平均大小。
%Util : 网卡利用率(百分比)。
Sat : 网卡每秒的错误数.网卡是否接近饱满的一个指标.尝试去诊断网络问题的时候,推荐使用-x选项去查看更多的统计信息。

./nicstat.sh –t 用于查看tcp信息

InKB : 表示每秒接收到的千字节
OutKB : 表示每秒传输的千字节
InSeg : 表示每秒接收到的TCP数据段(TCP Segments)
OutSeg : 表示每秒传输的TCP数据段(TCP Segments)
Reset : 表示TCP连接从ESTABLISHED或CLOSE-WAIT状态直接转变为CLOSED状态的次数
AttF : 表示TCP连接从SYN-SENT或SYN-RCVD状态直接转变为CLOSED状态的次数,再加上TCP连接从SYN-RCVD状态直接转变为LISTEN状态的次数
%ReTX : 表示TCP数据段(TCP Segments)重传的百分比.即传输的TCP数据段包含有一个或多个之前传输的八位字节
InConn : 表示TCP连接从LISTEN状态直接转变为SYN-RCVD状态的次数
OutCon : 表示TCP连接从CLOSED状态直接转变为SYN-SENT状态的次数
Drops : 表示从完成连接(completed connection)的队列和未完成连接(incomplete connection)的队列中丢弃的连接次数

./nicstat.sh -u 用于查看UDP信息

InDG : 每秒接收到的UDP数据报(UDP Datagrams)
OutDG : 每秒传输的UDP数据报(UDP Datagrams)
InErr : 接收到的因包含错误而不能被处理的数据包
OutErr :因错误而不能成功传输的数据包

./nicstat.sh –x 查看扩展信息

./nicstat.sh -a 等同于执行-t -u -x

2. 丢包率、错误重传

查看丢包方法1:使用ifconfig,查看 dropped是否有计数,有计数的话存在丢包的情况

查看丢包方法2:sar -n EDEV 查看 #rxdrop/s

当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目

查看丢包的方法3:网络延迟:ping -c 次数 服务器IP或域名 查看packet los

例如: ping –c 100 www.baidu.com

错误重传: ./nicstat.sh -t 查看%ReTX : TCP报文重传率
标准:<1%

 3.网络延迟

网络延迟:ping -c 次数 服务器IP或域名
标准:avg<100ms
例如: ping –c 100 www.baidu.com

4.网络错误

方法1: sar -n EDEV 查看:#txerr/s 每秒钟发送的数据包错误数

方法2: ifconfig 出现:"errors"

标准:不能出现错误

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/190216.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaSE】:数据类型

数据类型 一.总体概论二.java里与c的区别1.float2.char3.boolen 三.类型转换四.String类型 一.总体概论 在Java中数据类型主要分为两类&#xff1a;基本数据类型和引用数据类型。 不论是在16位系统还是32位系统&#xff0c;int都占用4个字节&#xff0c;long都占8个字节 。 整…

怎么给数据库某个字段建立一个前缀索引

说明&#xff1a;SQL调优中重要的一个环节是建立索引&#xff0c;其中有一条是字段值过长字段应该建立前缀索引&#xff0c;即根据字段值的前几位建立索引&#xff0c;像数据库中的密码字段、UUID字段。 因为其随机性&#xff0c;其实根据前几位就可以锁定某一条记录了。前缀索…

kafka开发环境搭建

文章目录 1 安装java环境1.1 下载linux下的安装包1.2 解压缩安装包1.3 解压后的文件移到/usr/lib目录下1.4 配置java环境变量 2 kafka的安装部署2.1 下载安装kafka2.2 配置和启动zookeeper2.3 启动和停止kafka 1 安装java环境 1.1 下载linux下的安装包 &#xff08;1&#xf…

2024年天津天狮学院专升本市场营销专业《市场营销学》考试大纲

2024年天津天狮学院专升本市场营销专业高职升本入学考试《市场营销学》考试大纲 一、考试性质 《市场营销学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必 考科目之一&#xff0c;其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《市…

RabbitMQ之延迟消息实战

RabbitMQ之延迟消息实战 使用死信交换机实现延迟消息 使用死信交换机的过期时间以及没有消费者进行消费&#xff0c;时间到了就会到死信队列中&#xff0c;由此可以实现延迟消息使用延迟消息插件 前提&#xff1a;需要mq配置插件 延时信息案例实战 把一个30分钟的延迟消息可以…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(八)

套餐模块功能开发 1. 新增套餐1.1 需求分析和设计1.1.1产品原型&#xff1a;1.1.2接口设计&#xff1a;1.1.3数据库设计&#xff1a; 1.2 代码开发1.2.1 DishController层1.2.2 DishService接口类1.2.3 DishServiceImpl接口实现类1.2.4 DishMapper层1.2.5 DishMapper.xml1.2.6 …

C++ PCL点云dscan密度分割三维

程序示例精选 C PCL点云dscan密度分割三维 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C PCL点云dscan密度分割三维》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。…

npm中的npx命令

1.概念 npx是一个执行npm软件包的二进制文件&#xff0c;通俗的讲&#xff0c;他可以执行npm的一些指令。 2.示例 用babel将ES6语法转为ES5语法 npx babel src/js -d dist/js会执行babel的相关功能&#xff0c;如果没有安装&#xff0c;也会自动安装。 当在执行npx <co…

因式分解的几何意义

本来准备和女儿一起玩一道几何题&#xff0c;想想还是算了&#xff0c;不如讲点更有趣的。 任何因式分解都是在堆积木&#xff0c;不信你看&#xff1a; 二项式定理&#xff0c;洋灰三角&#xff0c;都是面积&#xff0c;体积&#xff0c;超维体积的拼接&#xff0c;一个大超…

【Linux】Linux项目自动化构建工具 --- make / makefile

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …

如何申请永久免费的SSL证书

首先&#xff0c;让我们了解什么是SSL证书。 SSL&#xff08;Secure Socket Layer&#xff09;证书是一种数字证书&#xff0c;它提供了一种在互联网上安全地传输数据的方法。 这是一个必须的安全工具&#xff0c;可以加密您的网站和客户之间的所有信息。为了保护用户数据和确保…

C语言实现万年历

C语言实现万年历 一、项目介绍 需求和功能是用纯C语言实现一个可以属于年份&#xff0c;属于一个年份就可以显示该年各个月份的日历&#xff0c;如同日历一般&#xff0c;每个月当中每天对应的星期均可查看&#xff0c;即万年历&#xff0c;要求格式整齐&#xff0c;星期对照直…

Rust语言入门教程(六) - 字符串类型

在Rust中&#xff0c; 字符串类型其实是一个比较复杂的话题。在Rust的标准库中&#xff0c;至少都提供了6种字符串类型&#xff0c;我们平常使用的最多的是其中的两种。这两种类型互相之间也有所关联&#xff1a; str&#xff1a; 字符串切片String 字符串 其中&#xff0c; 字…

【python】--文件/文件夹读写及操作

目录 一、文件读写1、文件读写代码示例 二、文件/文件夹操作1、代码示例 一、文件读写 读写文件就是请求操作系统打开一个文件对象&#xff08;通常称为文件描述符&#xff09;&#xff0c;然后通过操作系统提供的接口从这个文件对象中读取数据&#xff08;读文件&#xff09;…

混社会,要知道的“人性铁律”

混社会&#xff0c;要知道的“人性铁律”&#xff1a; 1.女人的私密生活&#xff0c;生理需求往往都是心口不一。 【闲聊】&#xff1a;一个人越是想要什么&#xff0c;往往嘴里越是说不在意&#xff0c;无论是男女。 2.普通人的思维&#xff0c;往往把宏大的社会变迁所造成…

Typescript基础面试题 | 04.精选 ts 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

论文阅读:“Model-based teeth reconstruction”

文章目录 AbstractIntroductionTeeth Prior ModelData PreparationParametric Teeth Model Teeth FittingTeeth Boundary Extraction Reference Abstract 近年来&#xff0c;基于图像的人脸重建方法日趋成熟。这些方法可以捕捉整个面部或面部特定区域&#xff08;如头发、眼睛…

html实现各种瀑布流(附源码)

文章目录 1.设计来源1.1 动态响应瀑布流1.2 分页瀑布流1.3 响应瀑布流 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134613121 html实现各种瀑布流(附源码)&#xff0c;…

Java中wait()方法在synchronized方法中调用的奥秘

作为一名Java程序员&#xff0c;我们深知synchronized关键字和wait()方法在多线程编程中的重要性。 在本文中&#xff0c;我们将探讨为什么wait()方法需要在synchronized方法中调用&#xff0c;以及它们是如何协同工作的。 首先&#xff0c;让我们了解一下synchronized关键字和…

数字图像处理-Matlab实验

实验一 图像增强 实验内容: 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。 实验数据: Test1_1.jpg: Test1_2.jpg: 实验步骤: %% …