性能测试分析定位

这篇具有很好参考价值的文章主要介绍了性能测试分析定位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景简介

当我们在性能测试过程中,遇到TPS无法上去、请求响应时间过长、各类资源利用率遇到瓶颈时,应该如何对它们进行分析定位。

 

压测过程中TPS上不去?请求响应时间过长?

  1. 硬件资源不足:服务器的CPU、内存、磁盘等硬件资源不足,无法支撑高并发的请求处理。可以通过增加硬件资源或者优化服务器配置来提升TPS。
  2. 网络带宽限制:网络带宽不足,导致服务器无法及时响应请求。可以通过增加网络带宽或者优化网络传输方式来提升TPS。
  3. 数据库性能问题:数据库的读写性能不足,无法满足高并发的请求。可以通过优化数据库结构、索引、查询语句等方式来提升数据库性能。
  4. 代码逻辑问题:应用程序中存在性能瓶颈或者死循环等问题,导致请求处理速度变慢。可以通过代码优化来提升性能。也可能存在死锁或其他同步问题导致线程或进程阻塞,从而影响TPS。
  5. 压测/肉机配置问题:压测工具的配置(如压测肉机数量、压测脚本、场景设计等)可能影响TPS的表现。如压力机可能无法虚拟出预期的用户数,或者压测脚本和场景设计不合理,都会导致TPS无法提升。
  6. 负载均衡:负载均衡器配置不当可能导致请求分配不均,从而影响性能。检查负载均衡策略,优化配置。
  7. 依赖服务问题:应用程序依赖的第三方服务性能不稳定或者响应速度较慢,导致整体性能受限。可以通过替换或者优化第三方服务来提升性能。
  8. 中间件瓶颈:如消息队列堵塞,或有其他排队机制导致无法绕过队列进行高并发请求。
  9. 服务配置问题:系统的配置参数不合理,如线程池大小、连接池配置等,也会导致响应时间增。

资源利用率遇瓶颈分析

应用cpu瓶颈如何定位分析

定位

    1. 导致应用cpu使用率高,并且使用核数超出机器的核数(如:申请的机器是4核16g,但核数最大显示6核),有可能是经常上下文切换频繁导致的(上下文切换:就是当前进程请求某种资源(如IO操作)而无法立即得到满足,需要切换到其他进程执行,等待资源就绪后再切换回来);
    2. 程序使用复杂的算法如加/解密,或代码bug导致。

分析

    1. 减少上下文切换频繁,可以让配置进程数与压测的机器核数一样(因为一个核就有一个进程),配置完成再查看
    2. 如果配置好重新压测,cpu使用率依旧还是高,可以看看io是否很高(io操作:读取和写入磁盘上的文件或数据),如果io高,那么有可能出现堵塞
    3. 如果压测的请求响应时间也比较大,io和cpu也很高,那么有可能是代码有问题,查看火焰图,查看代码耗时是否比较大,还有mysql监控是否有慢查询等,或者连接数比较少导致
    4. 如果火焰图代码部分,有耗时比较大并且有慢查询的,可以进行sql语句优化
    5. 如果连接数比较少,设置大一点连接数去重新压,再观察性能情况
    6. 如果这些都配置好都修改好,还是有问题,可以考虑加资源或者考虑该业务是否可以进行异步处理来提高性能。

应用内存瓶颈如何定位分析

定位

在压测过程中,可以借助使用监控工具实时监测服务的内存使用情况,定期获取内存快照,监控的主要指标包括内存占用率、内存使用量、内存泄漏等。

分析

查看内存在压测完成后,过一段时间是否有下降趋势。如果没有下降趋势,查看火焰图,查看代码属于哪个函数使用的内存占比大导致,然后优化应用/服务代码后重新压,压测完成再过一段时间查看内存是否有下降,对比优化前后内存使用情况,确认优化措施是否有效。

应用磁盘瓶颈如何定位分析

定位

监控磁盘I/O,可使用系统监控工具(如Linux的iostat、iotop,Windows的Resource Monitor等)实时监控磁盘读写速度、等待时间等指标,看是否存在过高延迟或读写速率过低的情况。

分析

一般磁盘瓶颈就是io高,io高的话一般都是磁盘读写比较大导致,导致磁盘读写比较大,可能以下几种原因导致:

    1. 读写的数据太大导致
    2. 开发写的代码有问题
    3. 可能带宽比较小导致
    4. sql语句写的不规范导致,或者数据库连接数比较少导致,也有可能是mysql配置参数问题,如:数据库缓存配置小,导致不够用,才一直进行磁盘的读写操作(io包括磁盘IO和网络IO)

如果代码都没问题,连接数都没问题,myslq配置也正确,但io还是很高的,可以增加资源来解决后继续进行压测。

数据库内存瓶颈如何定位分析

定位

    1. 监控数据库内存使用情况:在压测过程中,使用监控工具实时监测数据库的内存使用情况,包括内存占用量、缓冲池使用情况等。可以通过数据库管理工具或者操作系统工具来监控;
    2. 分析数据库缓冲池:查看数据库的缓冲池配置,了解缓冲池的大小、命中率等。如果缓冲池命中率低或者缓冲池过小,可能会导致频繁的磁盘读取,从而影响性能;
    3. 检查数据库索引:检查数据库表的索引情况,确定是否存在缺失或者无效的索引。缺失或者无效的索引可能导致数据库执行大量的全表扫描,增加了磁盘IO的负担;
    4. 分析数据库查询语句:分析服务对数据库的查询语句,了解查询的复杂度和效率。复杂且低效的查询语句可能会导致数据库内存的过度消耗,从而影响性能;
    5. 查看数据库日志:查看数据库的错误日志和慢查询日志,了解是否存在异常和性能较差的查询。通过分析日志可以找出潜在的性能问题和优化的方向;
    6. 检查数据库配置:检查数据库的配置参数,例如内存限制、并发连接数等。如果配置参数不合理,可能会导致内存不足或者并发连接过多,从而影响性能。

分析

    1. 数据库使用内存高,一般是请求接口需大量的内存进行存储数据,如果内存不够用,会导致请求的接口失败,接口请求失败会导致响应慢等,还有可能会一直分配内存,导致有阻塞从而导致io高,磁盘读写也高,cpu使用率也高,网络io也会高,导致失败不断请求,网络io肯定高,可以新增资源通过负载均衡来解决。
    2. 根据分析结果,优化数据库查询语句和索引,例如调整查询条件、添加合适的索引等。同时,也可以考虑调整数据库的配置参数,如增加内存限制、调整并发连接数等。

网络io瓶颈如何定位分析

定位

    1. 可以通过使用网络监控工具如Wireshark、netstat命令等,来查看网络流量、带宽使用率、包丢失率、延迟等指标。如果这些指标异常,可能是网络IO瓶颈;
    2. 检查网络设备,如路由器、交换机、防火墙等,查看其配置和性能。确保设备的带宽和性能能够满足需求,如果设备配置不合适或者存在故障,可能会引起网络I/O瓶颈。

分析

网络io高,一般是写入读取的数据量大,需要很大的网络流量,如申请的带宽比较小也会导致,可将测机器的带宽网络申请至万兆以上来解决。文章来源地址https://www.toymoban.com/news/detail-843418.html

带宽瓶颈如何定位分析

定位

    1. 排查系统/服务运行在云环境中,检查云服务商的网络带宽限制;
    2. 检查系统有多个服务器,检查负载均衡策略是否合理。不恰当的负载分配可能导致某些服务器的带宽过度使用。

分析

    1. 出现带宽比较小的情况,通过增加带宽来解决遇到的瓶颈;
    2. 可以增加并发连接数进行测试,观察带宽利用率的变化。如果带宽利用率随着并发连接数的增加而增加,说明带宽瓶颈可能是由于连接数的限制引起的。

redis内存瓶颈如何定位分析

定位

    1. 使用Redis的监控工具或者第三方监控工具,实时监测Redis的内存使用情况,包括内存占用量、内存碎片、最大使用内存等指标。
    2. 查看Redis的日志文件,观察是否有内存相关的警告或错误信息,如内存使用过高的问题。

分析

    1. 如果压测完成,redis的内存不变,一直不会下降,有可能应用/服务存储的key值没有设置过期时间导致,这很容易导致内存泄漏,需检查对应的代码,看是否存储内存的值未设过期时间;
    2. 检查缓存策略是否有过多的数据被缓存,或者缓存更新策略导致了大量的无效内存占用;
    3. 以上方法无法解决内存瓶颈问题,可以考虑扩容Redis集群,增加节点的数量和内存容量,以提高整个系统的内存处理能力。

到了这里,关于性能测试分析定位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 性能分析方法论简介

    限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 通常,我们是通过理论指导实践,而实践又反哺完善理论,二者缺一不可。 总的来说,性能优化是 从 时间 和 空间 两方面做出优化 ,然后取得一个可接受的平衡点。记住,无论怎么优

    2023年04月19日
    浏览(51)
  • 『App自动化测试之Appium应用篇』| 元素定位工具uiautomatorviewer从简介、特点、启动到使用的完整过程

    之前文章说明了 Appium Inspector 的定位使用方法; uiautomatorviewer 是另一种定位工具; uiautomatorviewer 是 android-sdk 自带的元素定位工具; 它是通过截屏分析 XML 布局文件方式,来提供控件信息的查看服务。 uiautomatorviewer 和 Appium Inspector 有着明显的区别; Appium Inspector 功能相对比较

    2024年02月03日
    浏览(61)
  • GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

    GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的机遇,第一个是oprea的合作奖,第二个是用支持c#换来的微软的投资,第三个是虚幻

    2024年02月14日
    浏览(78)
  • app自动化测试之Appium问题分析及定位

    使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 Appium Server日志-开启服务 通过命令行的方式启动 Appium Server,下面来分析一下启动日志,日志第一行显示了 Appium 版本信息和服务在本地的运行

    2024年02月14日
    浏览(35)
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Apache Kafka 官方提供了两个客户端性能测试脚本,它们的存放位置如下: 生产者性能测试脚本:$KAFKA_HOME/bin/kafka-producer-perf-test.sh 消费者性能测试脚本:$KAFKA_HOME/bin/kafka-consumer-perf-test.sh kafka-producer-perf-test.sh 支持测试的性能指标包括:吞吐量(throughput)、最大时延(max-latenc

    2024年02月04日
    浏览(61)
  • 全网最全,性能测试-性能瓶颈分析详全,优秀的性能测试工程师养成记...

    内存分析 内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能(在这主要以Windows系统为主)。 内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。 1、查看MemoryAvailable Mbytes指标 在对系统进

    2024年02月05日
    浏览(70)
  • 你真的会性能测试吗?性能测试需求分析,从业务到数据(详细)...

    产品需求 业务场景: 一个问卷调查的功能,然后产品和业务会不定时通过前端界面去根据筛选条件查询相关问卷问题的答案明细,但是觉得很慢,让测试这边给出一个指标。 系统架构: MySQL数据库,所有问卷问题相关的数据都存储在同一张表,单台服务器,无缓存,通过一

    2024年02月10日
    浏览(58)
  • 性能测试需求分析和学习

    在实际的工作中系统的性能需求通常是一个笼统的需求,而且有可能给提需求的人并不知道具体的性能需要,所以只能含糊的列出。如果测试人员不搞清楚,就会出现实际要把杀猪刀,需求标明能屠龙!!! 下面,还是举一个讲个我真实经历过的故事来做实例分析。 故事开

    2024年02月09日
    浏览(44)
  • 性能测试分析与使用

    性能测试分析与使用 xx系统已经成功发布,依据之前项目的规划,计划服务1000+客户,未来势必会出现业务系统中信息大量增长的趋势。 随着该系统在生产状态下日趋稳定,也让我们可以更静下心来去关注性能方面的问题: 能够承受多大的数据量? 系统的瓶颈是什么? 代码的

    2023年04月08日
    浏览(47)
  • 性能测试需求分析怎么做?(中)

    本系列文章我们为大家系统地介绍一下性能测试需求分析,让大家全面掌握性能测试的第一个环节。本系列文章将会从性能测试需求分析整体概述、性能测试需求分析内容、性能测试需求分析方法这三个方面进行展开。在(上)部分中,我们为大家介绍了性能测试需求的组成

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包