51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4572|回复: 0
打印 上一主题 下一主题

[转贴] 1分钟学会Linux下Jmeter分布式压测流程

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:04
  • 签到天数: 1047 天

    连续签到: 5 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-3-30 13:04:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近公司要求要压测几个主要的借口,并且要输出最终的压测报告,因为压测报告要给甲方爸爸们看,让他们相信我们的服务是杠杠的,嘿嘿~。其实甲方爸爸们主要是想看服务器参数以及接口的负载能力(tps),于是我就压测了几个接口,发现了一些问题,针对有问题的接口做了一些优化。
      其实做一下压测是挺好的,可以发现很多测试环境不会出现的问题,比如可能缓存没命中,直接穿透到db等等。压测出来的结果,看到单机(4核8G)tps低于1000的,我们都进行了优化,tps怎么也要超过1000吧。因为一直都是使用jmeter来做压测,下面我们就来简单说一下jmeter压测的流程和一些注意事项。
      一、压测流程。
      1.在windows下面通过gui打开jmeter,创建测试计划以及压测脚本test.jmx,注意,动态配置的参数,可以使用变量来控制,以方面在linux下用命令行进行压测的时候,动态修改参数,如下图:


      2.把test.jmx脚本文件放到linux服务器,使用以下命令进行压测(压测不建议使用gui模式运行,gui模式会占用一定的系统资源)。
      jmeter -n -t test.jmx -J threadNum=10 -J threadCount=2 -l result.jtl

      -n表示以no gui模式运行;
      -t指定脚本文件,这里是 test.jmx
      -J选项传递动态参数,对应创建jmx脚本的时候设置的相关参数
      -l是指定结果监听器(比如聚合报告之类的)文件,这里是result.jtl
      3.压测过程中输出的大概如下,可参考图中的备注理解每个字段的意思:


      4.压测结果如果要生成html形式的报告,使用以下命令可以将result.jtl文件生成html的形式。
      jmeter -g result.jtl -o ./html

      -g指定生成结果文件,这里是result.jtl;
      -o指定生成的html结果文件目录,注意是目录,这里是html目录,最终生成的html相关文件会放到html目录下面;
      如果result.jtl比较大的话,转换的过程可能有点慢,要等一下。生成的html要传到window端,用浏览器打开即可。

      生成的html相关文件

    浏览器打开html报告

      5.生成的result.jtl,可以传到windows本地,使用jmeter查看相关的结果,使用jmeter新建一个测试计划,然后在该测试计划下面创建对应的监听器之后,点击监听器右边的浏览按钮,选中result.jtl,打开就可以看到对应的result.jtl的结果,大概如下图:

      图中的Thoughput就是tps,下面对聚合报告中的字段进行解读:
      Label:请求的名称,就是我们在进行测试的httprequest sampler的名称
      Samples:总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次;
      Average:默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间 ,单位是毫秒
      Median:50%用户的请求的响应时间,中位数
      90%Line:90%的请求的响应时间
      95%Line:95%的请求的响应时间
      99%Line:99%的请求的响应时间
      Min:最小的响应时间
      Max:最大的响应时间
      Error%:错误率=错误的请求的数量/请求的总数
      Throughput:默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
      Received KB/sec:每秒从服务器端接收到的数据量,即:收到的千字节每秒的吞吐量测试
      Sent KB/sec:每秒从客户端发出的的数据量,即:发送的千字节每秒的吞吐量测试
      ps.
      1.jmeter在linux下的安装和配置教程,这里就不赘述了,网上很多教程
      2.jmeter压测脚本的编写,网上也很多教程~
      二、注意事项:
      1.有时候压测机(运行jmeter的机器)也会成为瓶颈,比如通过https进行压测的时候,压测机的cpu就直接100%了,如果是http的话就没问题,https是多了证书的加解密验证过程,挺耗cpu的。这时候可以通过几台机进行压测,jmeter原生支持分布式进行压测。
      2.尽量使用no gui的模式进行压测,同时压测机(运行jmeter的机器)要和接口服务器分开,jmeter进行压测的时候,也是很耗资源的。
      3.测试之后,如果某些接口tps很低,可以通过jprofile,jstack,jvisualVM之类的工具进行调优,接口response body很大的,可以考虑压缩之后再返回(比如tomcat,undertow等容器内部自带压缩机制)。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 09:17 , Processed in 0.062756 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表