当前位置: 首页 > news >正文

Jmeter 性能压测 —— 分析定位2

1、压测过程中TPS上不去?请求响应时间过长?
硬件资源不足:服务器的CPU、内存、磁盘等硬件资源不足,
无法支撑高并发的请求处理。可以通过增加硬件资源或者优
化服务器配置来提升TPS。

网络带宽限制:网络带宽不足,导致服务器无法及时响应请求。
可以通过增加网络带宽或者优化网络传输方式来提升TPS。

数据库性能问题:数据库的读写性能不足,无法满足高并发的请求。
可以通过优化数据库结构、索引、查询语句等方式来提升数据库性能。

代码逻辑问题:应用程序中存在性能瓶颈或者死循环等问题,
导致请求处理速度变慢。可以通过代码优化来提升性能。
也可能存在死锁或其他同步问题导致线程或进程阻塞,从而影响TPS。

压测/肉机配置问题:压测工具的配置(如压测肉机数量、压测脚本、
场景设计等)可能影响TPS的表现。如压力机可能无法虚拟出预期的用
户数,或者压测脚本和场景设计不合理,都会导致TPS无法提升。

负载均衡:负载均衡器配置不当可能导致请求分配不均,从而影响性能。
检查负载均衡策略,优化配置。

依赖服务问题:应用程序依赖的第三方服务性能不稳定或者响应速度较慢,
导致整体性能受限。可以通过替换或者优化第三方服务来提升性能。

中间件瓶颈:如消息队列堵塞,或有其他排队机制导致无法绕过队列进行
高并发请求。

服务配置问题:系统的配置参数不合理,如线程池大小、连接池配置等,
也会导致响应时间增。
一键获取完整项目代码
2、资源利用率遇瓶颈分析
1)应用CPU瓶颈定位分析

定位:

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

程序使用复杂的算法如加/解密,或代码bug导致。
一键获取完整项目代码
分析:

减少上下文切换频繁,可以让配置进程数与压测的机器核数一样
(因为一个核就有一个进程),配置完成再查看

如果配置好重新压测,cpu使用率依旧还是高,可以看看io是否很高
(io操作:读取和写入磁盘上的文件或数据),如果io高,那么有可
能出现堵塞

如果压测的请求响应时间也比较大,io和cpu也很高,那么有可能是
代码有问题,查看火焰图,查看代码耗时是否比较大,还有mysql监
控是否有慢查询等,或者连接数比较少导致

如果火焰图代码部分,有耗时比较大并且有慢查询的,可以进行sql语句优化
如果连接数比较少,设置大一点连接数去重新压,再观察性能情况
如果这些都配置好都修改好,还是有问题,可以考虑加资源或者考虑该业务
是否可以进行异步处理来提高性能。
一键获取完整项目代码
2)应用内存瓶颈定位分析
定位:​​​​​​​

在压测过程中,可以借助使用监控工具实时监测服务的内存使用情况,
定期获取内存快照,监控的主要指标包括内存占用率、内存使用量、内存泄漏等。
一键获取完整项目代码
分析:​​​​​​​

查看内存在压测完成后,过一段时间是否有下降趋势。
如果没有下降趋势,查看火焰图,查看代码属于哪个函数使用的内存占比大导致,
然后优化应用/服务代码后重新压,压测完成再过一段时间查看内存是否有下降,
对比优化前后内存使用情况,确认优化措施是否有效。
一键获取完整项目代码
3)应用磁盘瓶颈定位分析
定位:​​​​​​​

监控磁盘I/O,可使用系统监控工具 (如Linux的iostat、iotop,Windows的
Resource Monitor等) 实时监控磁盘读写速度、等待时间等指标,看是否存在
过高延迟或读写速率过低的情况。
一键获取完整项目代码
分析:​​​​​​​

一般磁盘瓶颈就是io高,io高的话一般都是磁盘读写比较大导致。
导致磁盘读写比较大,可能以下几种原因导致:
读写的数据太大导致;
开发写的代码有问题;
可能带宽比较小导致;

sql语句写的不规范导致,或者数据库连接数比较少导致,也有可能是mysql配置参数问题,如:数据库缓存配置小,导致不够用,才一直进行磁盘的读写操作(io包括磁盘IO和网络IO)
如果代码都没问题,连接数都没问题,mysql配置也正确,但io还是很高的,可以增加资源来解决后继
————————————————
版权声明:本文为CSDN博主「测试界的彭于晏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/IT_LanTian/article/details/139835206

http://www.zskr.cn/news/1399986.html

相关文章:

  • 《B4449 [GESP202512 三级] 密码强度》
  • 【最新 v2.7.5 版本安装包】OpenClaw v2.7.5 电脑 AI 自动化部署实操教程
  • 从图像处理到项目实战:手把手教你用VS2019+OpenCV4.5写第一个‘看图’程序
  • Godot游戏源码,交流学习
  • 射频功率放大器PA核心指标实战测量指南
  • 联合团队发布深度学习优化算法综述,为下一代优化方法设计提供实践指南
  • 目视化不是面子工程,是航特思齐的管理底气|让文化、秩序、成长看得见
  • YOLO26+玉米幼苗杂草检测:最高精度0.98,助力智能除草(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • 构建AI命令行助手:Gemini集成与Antigravity自动化实践
  • 如何在Windows 10/11中为HEIC照片添加缩略图预览:终极解决方案指南
  • 开源项目推荐——HyperFrames
  • 构建AI智能体宪法框架:分层治理与安全实践指南
  • 超越基础渲染:手把手教你用Obi Fluid的粒子系统打造Unity动态烟雾与魔法特效
  • 构建高效元工具链:从代码规范到自动化部署的工程实践
  • Unity 2020.2 + ShaderGraph 10.3.2 实战:从涂鸦到刮刮乐,一个RenderTexture搞定两种交互效果
  • 冥想第一千八百八十九天(1889)
  • Theta正则化克里金模型:提升代理模型预测精度与稳定性的关键技术
  • codex访问deepseek
  • 告别硬件依赖!镜像视界纯视觉“四无”架构,引领空间智能代际跨越
  • AI与神经科学融合:Transformer架构与大脑计算原理的深度对话
  • 2026 生产制造业抖音推广入门 从 0 到 1 做工程账号完整流程
  • Docker化部署Ansible AWX:从零搭建企业级自动化运维平台
  • 构建本地语音AI助手:人在回路机制与隐私优先设计
  • Kafka核心概念与架构深度解析
  • 【C++基础篇】学习C++就看这篇--->类和对象之static成员、友元、内部类、匿名对象
  • 用Unity UGUI打造游戏内的可折叠技能树或背包系统:基于Hierarchy视图的UI设计思路
  • AI安全新范式:从能力竞赛到风险管控,Anthropic的“危险模型”启示
  • 模型安全扫描器失效:29种绕过技术揭示PyTorch与Hugging Face模型加载风险
  • CentOS 7服务器配置实录:用yum安装PHP 8.1并搞定常用扩展(bcmath, gd, pdo_mysql...)
  • Spectrasonics Trilian 1.6.6D:音乐人公认的四大顶级贝斯合成器之一,全面解析与下载