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

如何做好性能测试?

【性能测试】年薪30W+必学!JMeter全链路压测实战(脚本/监控/Grafana调优)| jmeter性能测试

背景

linux作为压力机,利用JMeter的CLI Mode发起压力,使用nmon工具监控系统资源使用。

简单的测试流程如下:

  1. 删除/归档上次压测时产生的文件,包括JMeter和nmon监控数据,分布在压力机上和被监控服务器上。
  2. 发起JMeter压测,发起nmon监控。
  3. 下载nmon的监控文件,分析监控文件。
  4. 归档测试数据,包括JMeter产生的数据,nmon监控数据。

按上述测试流程的顺序,使用的命令如下:

# step 1
# 删除JMeter产生的数据:res目录, res.jtl文件,jmeter.log日志
# 删除下载到压力机nmon目录下的nmon文件
rm -rf res* nmon/*nmon* jmeter.log 
# 删除被监控服务器上监控文件
# rssh是以前自己写的小程序,可利用ssh2在各远程服务器上批量执行命令以及上传下载单个文件。
# 其中all代表server.json配置文件中有效的服务器信息。
# rssh > [str] 表达运行rssh命令连接服务器后,再输入[str]批量执行命令。
rssh > all rm perf/res.nmon # step 2
# 使用JMeter CLI MOD,发起JMeter压测
jmeter -Jjmeter.reportgenerator.overall_granularity=2000 -Jsummariser.interval=10 -JThreads=100 -JRampup=1 -JDuration=310 -JJLoopOrRampupCount=-1 -n -t 1.jmx -l res.jtl -e -o res
# 发起nmon监控
rssh > all exec nmon -F perf/res.nmon -t -s 1 -c 300
# 查看jmeter命令返显的概述结果(每10秒的增量,从测试开始到现在平均值,包括TPS, 平均响应时间,错误数据和错误率)# step 3
# 下载nmon文件
rssh > all get perf/res.nmon ./
# 快速分析nmon文件并查看文件(cpu) , rnmon为自己写的小程序,可快速分析当前目录下.nmon文件的cpu%使用,包括usr%,sys%, idle%...和各项值的标准差(用于查看曲线波动情况) 
# 若要详细查看nmon文件,使用nmon官方提供的Nmon-Analyser工具生成excel图表查看
rnmon ./ > res.nmon.txt && cat res.nmon.txt# step 4
# 新建本地目录并按场景和一些规范重命令
# 使用sftp工具,下载压力机上收集的数据到本地目录,包括res目录,res.jtl, jmeter.log和nmon目录
# 打开res/index.html查看JMeter生成的压测图表,分析当前测试结果。

每次测试执行上述基本固定的操作,感觉还是挻繁琐的OVO

故想利用run.sh脚本完成以下目标:

  1. 运行前检查,删除/归档上次压测时产生的数据。
  2. 简化运行时的参数输入(减少jmeter命令附带参数的长度)
  3. 自动计算nmon监控的时长并发监控。
  4. 下载并分析nmon文件到压力机。
  5. 按一定的规则,归档数据。

run.sh

run.sh的帮助文档

因不同的项目可能使用不同的参数测试,且单次项目中这些参数是基本不变的,故使用test.proerties配置文件存放相关的JMeter参数和自定义的参数,比如:

# 发压地址
ip=192.168.8.8
# 更改jmeter命令测试时返显结果的刷新频率
summariser.interval=10
# 更改jmeter命令生成图表曲线相领两点间的间隔时间
jmeter.reportgenerator.overall_granularity=2000

压力机上运行几次测试后的情况:

压力机工作目录的情况

压力机上某一归档目录的情况

使用run.sh脚本的好处,是让我们把时间集中在测试结果的表现,而不是在工作中穿插大量、小、繁琐且无意义的事件。

备注1: 把run.sh脚本放入$PATH里,且在同级目录下放入预定的test.proerties文件,这样可省略不同项目在同台压力机上,在不同目录之间复制run.sh脚本和test.proerties文件的烦恼。

未来

以上都是在JMeter的基础上的小修小改。未来会向不同的方向做一定的尝试,包括不限于:

  1. 发压的平台化。
  2. 增加监控的手段,为调优提供参考。
  3. 接口资产化管理。
  4. 借鉴市面上优秀产品的设计理念。

附1,run.sh脚本链接。

附2,其中rssh_async是自己写的小程序,是前面rssh小程序的异步版。

【性能测试】年薪30W+必学!JMeter全链路压测实战(脚本/监控/Grafana调优)| jmeter性能测试

 

http://www.dtcms.com/a/294763.html

相关文章:

  • 自定义类型:结构体,联合和枚举
  • 慢 SQL接口性能优化实战
  • 线路板快板厂家有哪些?
  • HCIA复习+网络类型及数据链路层协议复习
  • 【已解决】ubuntu执行sudo apt update镜像源更新失败:404 Not Found 没有 Release 文件。
  • 2025暑期—04环境设置-D2L+Jupyter
  • Java应用程序内存占用分析
  • Android root和完整性检测实现方案深度分析
  • 第三章 浏览器 【1. 文档对象模型(DOM)】
  • Pandas库全面学习指南(一)
  • 视觉大模型
  • Linux基本命令
  • 【读代码】Facebook Denoiser:开源端到端语音降噪系统原理与实战
  • 主流软件开发方法综述:从敏捷到开源
  • 表征工程与置信度增强:表征工程是提取隐藏层状态表征,LLM的置信度增强是优化的logist数值
  • 第一章:Go语言基础入门之Hello World与Go程序结构
  • 基于vue框架的服装店管理系统tma7v(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • FastGPT + Kymo:解锁企业专属知识库与智能体开发新体验
  • M3066ANL网络变压器,常用于NEC方案机顶盒等网络设备M3066AN实现网络信号的稳定传输与电气隔离保护
  • MybatisPlus操作方法详细总结
  • ar景区导航导览开发方案:核心技术架构与功能设计
  • 阶段1--域名服务器
  • Ceph残留磁盘清理与格式化
  • lesson22:Python的魔法方法
  • irf实验
  • 常用的正则表达式
  • 陷波频率处的相位补偿:相角超前矫正原理深度拆解
  • 综合实验(2)
  • QGraphicsScene导出为PDF
  • 大模型就业方向