JMeter+Jenkins分布式压测持续集成

发布时间 2023-03-22 21:17:20作者: huiyii

 Jenkins

job配置

  • 参数化构建

  • 运行分布式shell脚本:sh ...

  • 生成测试报告

JMeter

性能脚本  

编写jmeter脚本/自定义Java脚本,脚本参数化,并且可带参数命令行执行

  • 自定义Java脚本

  • jmeter脚本

  • 带参数命令行执行脚本 https://www.cnblogs.com/ww-xiaowei/p/16091236.html

      • 命令行运行 jmeter -n -t test.jmx -l res.jtl -e -o res/

        • -n: 命令行模式启动

        • -t:jmx脚本路径

        • -l:生成的jtl脚本路径

        • -e -o:生成html报告,指定路径

        • -r:分布式执行,slaver为jemter.properties配置的

        • -R:分布式执行,指定slaver的ip和port

      • 带参数动态执行

    -J 加上脚本设置的变量名=N,例如线程数的变量名是concurrent_number(在脚本中参数化写法:${P(count_number,1)} 用到了P()函数来获取命令中指定的属性值,默认值是1),在命令行指定10个线程数:-Jconcurrent_number=10 (位置放在脚本文件后面)

    jmeter -n -t 01login.jmx-Jconcurrent_number=10-l 01resLogin.jtl -e -o 02res

    若有多个变量,分别指派值,例如:循环次数为5 -Jcycles=5

    jmeter -n -t 01login.jmx-Jconcurrent_number=10-Jcycles=5-l 01resLogin.jtl -e -o 02res

 分布式执行的shell脚本

  • 设置脚本参数

  • 设置各报告路径

  • 执行分布式jmx脚本

  • 后续处理(删除不需要的报告等)

瓶颈 

  • master将请求分发给slaver,受网络限制

  • master一直在收集和存储slaver的报告数据,受网络和磁盘写入速度影响