| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 带你了解如何分析Jmeter监听器常用图表并定位瓶颈 -> 正文阅读 |
|
[开发测试]带你了解如何分析Jmeter监听器常用图表并定位瓶颈 |
1.1 Jmeter监听器常用图表目录 1.1-1 查看结果树? ? ? ?查看结果树:调试利器。可以查看每个请求具体的详情,方便进行测试的比对。有点类似我们的抓包,可以看到request以及response信息。 ?1.1-2 汇总报告? ? ? ?汇总报告:为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似,只是它使用更少的内存。 参数说明: >> Label:取样器别名,如果勾选Include group name,则会添加线程组的名称作为前缀 >> # Samples:取样器运行次数 >> Average:请求(事务)的平均响应时间 >> Min:请求的最小响应时间 >> Max:请求的最大响应时间 >> Std. Dev:响应时间的标准方差 >> Error %:事务错误率 >> Throughput:吞吐量 也就是TPS >> Received KB/sec:每秒收到的千字节 >> Sent KB/sec:每秒发送的千字节 >> Avg. Bytes:响应平均流量 1.1-3 集合报告聚合报告:与Summary Report类似,但是表格中的内容有些许区别。 参数信息: >>Label:取样器别名,如果勾选Include group name,则会添加线程组的名称作为前缀 >>#?Samples:取样器运行次数 >>Average:请求(事务)的平均响应时间 >>Median:中位数 >>90% Line:90%用户响应时间 >>95% Line:90%用户响应时间 >>99% Line:90%用户响应时间 >>Min:最小响应时间 >>Max:最大响应时间 >>Error:错误率 >>Throughput:吞吐率 >>Received KB/sec:每秒收到的千字节 >>Sent KB/sec:每秒收到的千字节 1.1-4 综合图?? ? ? ?综合图:可以看到表格显示的结果与图形结果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。 参数说明:
>>Title:在图表的头部定义图表的标题 >>Graph size:根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段定义自定义大小。单位是像素 >>X? ?Axis settings:定义X轴标签的最大长度(以像素为单位) >>Y? ?Axis settings:为Y轴定义自定义最大值 >>Legend:定义图表图例的放置和字体设置 >>Graph:图表形式显示,如下: ?1.1-5 断言结果断言结果:会消耗大量资源(内存和CPU),性能测试时候不建议使用。 ?1.1-6 图形结果图形结果:也占用系统CPU,所以性能测试时候不推荐使用。 ?参数说明: >>样本数目:在这里,我们可以把样本数量简单理解成是jmeter一共向服务器发起了多少次请求 >>最新样本:jmeter最后一次发送请求的响应时间:单位是毫秒 >>平均:所有请求响应时间的平均值:单位是毫秒 >>偏离:标准方差,学过统计学的同学应该知道这个概念:如果你对这个概念一无所知也没有关系,偏离越小就代表测试的总体结果与平均值越接近 >>吞吐量:被测系统每分钟能处理的请求个数,这是判断服务器性能好坏的重要指标(也可以说是最重要的指标):在上面的图形结果报表里我们可以看到系统的吞吐量是138.985每分钟,这就代表着系统每分钟可以处理138.985个请求 >>中值:就是响应时间的中间值,学术一点中值指的是有50%的值大于这个值,另外50%的值小于这个值:蒙圈了吧?实际上中值指的是如果有9个数,那么我们从小到大排列这些数,排在第5个的数就是这一组数的中值:那么如果有10个数呢?10个数的话第5个和第6个数的平均值就是这组数字的中值 1.1-7 响应时间图响应时间图:响应时间图形监听器。有点和我们之前介绍的Aggregate Graph类似。 ?参数说明: >>Interval (ms):X轴间隔的时间(以毫秒为单位) >>Sampler label selection:按结果标签过滤。可以使用正则表达式 >>Title:在图表的头部定义图表的标题 >>Line settings:定义线条的宽度 >>Graph size:根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“宽度”和“高度”字段定义自定义大小。单位是像素 >>X? Axis settings:自定义X轴标签的日期格式? >>Y? Axis settings:自定义X轴标签的日期格式 >>Legend:定义图表图例的放置和字体设置 1.2 Jmeter性能瓶颈定位1.2-1 性能瓶颈产生的原因? ? ? ? jmeter能够监控的就是那么几个指标,最先反应问题的肯定是响应时间,事务的成功率。如果响应时间和成功率,其中有一个不符合要求,那么就需要来定为瓶颈出现在哪。一个性能瓶颈可能出现的地方拥有很多种可能,应用系统的从前到后任何一个环节都有可能。前端、后端、数据库、操作系统,甚至网络,包括硬件问题,都有可能是导致出现性能瓶颈的地方,那我们作为测试工程师,最终的目标就是要定为到问题的发生点。瓶颈产生在以下几方面:
1.2-2 性能瓶颈的解决方法? ? ? ?逐步细化分析,先可以监控一些常见衡量CPU,内存,磁盘的性能指标,进行综合分析,然后根据所测系统具体情况,进行初步问题定位,然后确定更详细的监控指标来分析。?? 1、怀疑内存不足时:当内存不足时,有些进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上
>>方法二:根据Physical Disk 值分析性能瓶颈
2、怀疑内存泄漏时: >>监控指标:Memory Available MBytes ,Process\Private Bytes和Process\Working Set,PhysicalDisk/%Disk Time >>说明:Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。内存泄漏应该通过一个长时间的,用来研究分析当所有内存都耗尽时,应用程序反应情况的测试来检验 3、CPU分析 >>监控指标:
>>参考值:
4、CPU瓶颈问题: >>指标分析:System\%Total processor time如果该值持续超过90%,且伴随处理器阻塞,则说明整个系统面临着处理器方面的瓶颈。注:在某些多CPU系统中,该数据虽然本身并不大,但CPU之间的负载状况极不均衡,此时也应该视作系统产生了处理器方面的瓶颈 >>排除内存因素:如果Processor %Processor Time计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU 瓶颈。(内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上) 5、造成CPU使用率高的原因: >>频繁执行程序,复杂运算操作,消耗CPU严重 >>数据库查询语句复杂,大量的?where 子句,order by, group by 排序等,CPU容易出现瓶颈 >>内存不足,IO磁盘问题使得CPU的开销增加 ?6、磁盘 I / O分析 >>监控指标:PhysicalDisk/%Disk time,PhysicalDisk/%Idle Time,Physical Disk\ Avg.Disk Queue Length, Disk sec/Transfer >>参考值:%Disk Time建议阈值90%。Windows资源监控中,如果% Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
1.2-3 性能瓶颈如何定位
具体场景有:性能测试,负载测试,压力测试,稳定性测试,浪涌测试等。好的测试场景,能更加快速的发现瓶颈,定位瓶颈。 ? ? ?4. 了解系统参数配置,可以进行后期的性能调优。 小结:做性能测试的时候,我们一定要确保瓶颈不要发生在我们自己的测试脚本和测试工具上。 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:46:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |