性能测试监控指标及分析调优指南
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快一、哪些因素会成为系统的瓶颈CPU如果存在大量的计算他们会长时间不间断的占用CPU资源导致其他资源无法争夺到CPU而响应缓慢从而带来系统性能问题例如频繁的FullGC以及多线程造成的上下文频繁的切换都会导致CPU繁忙一般情况下CPU使用率75%比较合适。内存Java内存一般是通过jvm内存进行分配的主要是用jvm中堆内存来存储Java创建的对象。内存的读写速度非常快但是内存空间又是有限的当内存空间被占满对象无法回收时就会导致内存溢出或内存泄漏。磁盘I/O磁盘的存储空间要比内存存储空间大很多但是磁盘的读写速度比内存慢虽然现在引入SSD固态硬盘但是还是无法跟内存速度相比。网络带宽的大小会对传输数据有很大影响当并发量增加时网络很容易就会成为瓶颈。异常Java程序抛出异常要对异常进行捕获这个过程要消耗性能如果在高并发的情况下持续进行异常处理系统的性能会受影响。数据库数据库的操作一般涉及磁盘I/O的读写大量的数据库读写操作会导致磁盘I/O性能瓶颈进而导致数据库操作延迟。当在并发编程的时候经常会用多线程操作同一个资源这个时候为了保证数据的原子性就要使用到锁锁的使用会带来上下文切换从而带来性能开销在JDK1.6之后新增了偏向锁、自旋锁、轻量级锁、锁粗化、锁消除。二、哪些指标做为衡量系统的性能1.RT响应时间数据库响应时间即数据库操作的时间服务端响应时间服务端包括Nginx分发的请求所消耗的时间及服务端程序执行所消耗的时间。网络响应时间网络传输网络硬件需要对传输的请求进行解析所消耗的时间客户端响应时间一般Web、App客户端消耗时间可以忽略不计但是如果客户端存在大量的逻辑处理消耗的时间有能能就会变长。2.TPS吞吐量磁盘吞吐量IOPSInput/Output Per Second每秒的输入输出量这种是单位时间内系统能处理的I/O请求数量I/O请求通常为读或写数据操作请求关注随机读写性能适用于随机读写频繁的应用如小文件存储邮件服务器。数据吞吐量这种是单位时间可以传输的数据量对于大量顺序读写频繁的应用传输大量连续数据例如视频编辑。网络吞吐量指网络传输时没有丢帧的情况下设备能够接受的最大数据速率。网络吞吐量不仅跟带宽有关系还跟CPU处理能力、网卡、防火墙、以及I/O等紧密联系吞吐量的大小由网卡的处理能力、内部程序算法以及带宽大小决定。3.资源使用率CPU使用率首先可以先了解CPU的基本信息包括物理CPU的个数、单个CPU的核数然后可以通过命令查看使用率vmstat、mpstat、top内存使用率free -m、vmstat、top磁盘I/O iostat、 iotop网络I/Onetstat、ifconfig、tcpstat三、性能测试注意的问题我们在做性能测试的时候系统的运行会越来越快后面的访问速度比我们第一次访问的速度快了好几倍这是因为Java语言编译的顺序是.java文件先编译为.class文件然后通过解释器将.class的字节码转换成本地机器码后才能运行。为了节约内存和执行效率代码最初被执行时解释器会率先解释执行这段代码。随着代码被执行的次数增多虚拟机发现某个方法或代码运行的特别频繁就被认定为热点代码Hot Spot Code。为了提高热点代码的执行效率在运行时虚拟机将会通过即时编译器JIT把这些代码编译成为本地平台相关的机器码然后储存在内存中之后每次运行代码时直接从内存中获取。这样就会导致第一次系统运行慢后面访问的速度快几倍。在做性能测试的时候每次测试处理的数据集都是一样的但是结果却有差异这是因为测试时伴随着很多不稳定因素比如机器其他进程的影响、网络波动以及每个阶段JVM垃圾回收的不同等。我们可以通过多次测试将测试结果求平均只要保证平均值在合理范围之内并且波动不是很大这种情况性能测试就算通过。四、定位性能问题的时候可以使用自下而上的策略分析排查当我们进行压测之后我们会输出一份性能测试报告其中包括RT、TPS、TP99被压服务器的CPU、内存、I/O以及JVM的GC频率。通过这些指标可以发现性能瓶颈我们可以采用自下而上的方式进行分析。1. 首先从操作系统层面查看系统的CPU、内存、I/O、网络的使用率是否异常再通过命令查找异常日志最后通过日志分析找到导致瓶颈的问原因。2. 还可以从Java应用的JVM层面查看JVM的垃圾回收频率以及内存分配情况是否存在异常分析垃圾回收日志找到导致瓶颈的原因。3. 如果系统和JVM层面都没有出现异常情况然后可以从应用服务业务层查看是否存在性能瓶颈例如Java编程问题读写数据库瓶颈等。五、优化性能问题的时候可以使用自上而下的策略进行优化整体的调优顺序我们可以从业务调优到编程调优最后再到系统调优。1.应用层调优首先是优化代码代码问题往往会因为消耗系统资源而暴漏出来例如代码导致内存溢出使JVM内存用完而发生频繁的FullGC导致CPU偏高。其次是优化设计主要是优化业务层和中间件层代码例如可以采用代理模式放在频繁调用的创建对象的场景里共享一个创建对象减少创建对象的消耗。再次是优化算法选择合适的算法降低时间复杂度。2.中间件调优MySQL调优1表结构与索引优化主要是对数据库设计、表结构设计以及索引设置维度进行的优化设计表结构的时候考虑数据库的水平与垂直的拓展能力提前规划好将来数据量、读写量的增长规划好分库分表方案。对字段选择合适的数据类型优先选用较小的数据结构。2SQL语句优化主要是对SQL语句进行的优化使用explain来查看执行计划来查看是否使用了索引使用了哪些索引。也可以使用Profile命令分析语句执行过程中各个分步的耗时。3MySQL参数优化主要是对MySQL服务的配置进行优化例如连接数的管理对索引缓存、查询缓存、排序缓存等各种缓存大小进行优化4硬件及系统配置对硬件设备和操作系统设置进行优化例如调整操作系统参数、禁用swap、增加内存、升级固态硬盘。3.系统调优首先是操作系统调优Linux操作的内核参数设置可以进行调优已达到提供高性能的目的。其次JVM调优设置合理的JVM内存空间以及垃圾回收算法来提高性能例如如果业务逻辑会创建大对象我们就可以设置将大的对象直接放到老年代中这样可以减少年轻代频发发生YongGC减少CPU的占用时间。4.调优的策略首先是时间换取空间有的时候系统对查询速度要求不高对存储空间要求较高这个时候我们可以考虑用时间换取空间。其次是空间换取时间用存储空间提升访问速度典型的就是MySQL的分库分表策略MySQL表单数据存储千万以上的时候读写性能就会下降这个时候我们可以将数据进行拆分以达到查询的时候每个表的数据是少量的以达到提升性能的目的。5.兜底策略系统调优后仍然还会存在性能问题这个时候我们需要有兜底策略 首先是限流对系统的入口设置最大访问限制同时采取断熔措施返回没有成功的请求。其次是横向扩容当访问量超过某一个阈值时系统可以自动横向增加服务。最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。

相关新闻

小白程序员必看:收藏这份Agent技术学习路线图,从入门到精通大模型!

小白程序员必看:收藏这份Agent技术学习路线图,从入门到精通大模型!

本文提供了一套系统化的Agent技术学习路线,分为基础筑基、核心概念与工具、项目实践与深化、精通与进阶四个阶段。涵盖Python编程、LLM基础、软件工程、Agent核心概念、主流框架如LangChain等实践内容,通过入门和进阶项目帮助读者将知识融会贯通&#xf…

2026/7/5 17:28:38 阅读更多 →
对比一圈后!千笔AI,口碑爆棚的降AI率网站

对比一圈后!千笔AI,口碑爆棚的降AI率网站

在AI技术迅速发展的今天,越来越多的学生开始借助AI工具辅助论文写作,提升效率和质量。然而,随着知网、维普、万方等查重系统不断升级算法,以及Turnitin对AIGC(人工智能生成内容)的识别愈发严格,…

2026/7/5 10:25:32 阅读更多 →
考研考公倒计时励志动态壁纸,保持动力。

考研考公倒计时励志动态壁纸,保持动力。

考研考公倒计时励志动态壁纸系统一、实际应用场景描述在数字化学习时代,越来越多的考生面临着"学习动力不足、时间感知模糊、目标感缺失"的普遍问题。本系统针对考研/考公备考群体,将枯燥的倒计时转化为动态艺术壁纸,融合数字文化创…

2026/5/17 6:57:28 阅读更多 →

最新新闻

深入理解openeuler/xmlpull架构:核心组件与工作原理

深入理解openeuler/xmlpull架构:核心组件与工作原理

深入理解openeuler/xmlpull架构:核心组件与工作原理 【免费下载链接】xmlpull This package provides xml pull parsing API 项目地址: https://gitcode.com/openeuler/xmlpull 前往项目官网免费下载:https://ar.openeuler.org/ar/ openeuler/xm…

2026/7/6 8:21:47 阅读更多 →
Android设备完整性检测实战:Play Integrity API Checker工具使用与集成指南

Android设备完整性检测实战:Play Integrity API Checker工具使用与集成指南

1. 项目概述:为什么我们需要Play Integrity API Checker?在Android应用开发与安全对抗的战场上,我见过太多因为设备环境不可信而导致的“惨案”。一个精心设计的应用内购验证逻辑,可能因为用户设备被Root而形同虚设;一…

2026/7/6 8:21:47 阅读更多 →
3天掌握YOLO目标检测:从环境搭建到实战训练全流程指南

3天掌握YOLO目标检测:从环境搭建到实战训练全流程指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 先搞清楚“3天学透YOLO”到底在说什么 看到“3天学透YOLO全系列”这种标题,第一反应往往是怀疑。YOLO从v1到v13&#…

2026/7/6 8:19:47 阅读更多 →
java017期_java小程序+大后台web商城源码

java017期_java小程序+大后台web商城源码

java小程序大后台web商城源码 基于ssm的一款电子商城,系统采用maven的父子结构, 1、后台web商城包含的模块有: 会员管理、商城配置、编辑商品、订单管理、推广管理、系统管理等大模块, 每个大模块包含至少6个子模块,功…

2026/7/6 8:19:47 阅读更多 →
Windows右键菜单深度解析:从杂乱到有序的工作流重构实践

Windows右键菜单深度解析:从杂乱到有序的工作流重构实践

Windows右键菜单深度解析:从杂乱到有序的工作流重构实践 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 作为Windows用户,你是否经历过这…

2026/7/6 8:17:47 阅读更多 →
SQL集合运算符深度解析:UNION、INTERSECT、EXCEPT原理与避坑指南

SQL集合运算符深度解析:UNION、INTERSECT、EXCEPT原理与避坑指南

1. 为什么我坚持把 SQL 集合运算符讲透——不是为了炫技,而是因为90%的日常数据清洗都卡在这一步 你有没有遇到过这样的场景:老板甩来两份Excel表格,一份是上季度新注册用户,一份是本月完成首单的用户,让你“快速拉个名…

2026/7/6 8:17:47 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻