如何做好性能测试?

【性能测试】年薪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性能测试

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值