Jmeter分布式压测探索实践


Jmeter是我们常用的一款压测工具,近期做了一次压测实践,在此记录一下。

一、测试准备

产品需求是测试环境单个服务器节点TPS达到5000,压测目标是两个http接口,前一个接口的返回值中的token作为后一个接口的参数传入。

1.创建测试计划

有两种方法可以创建jmeter测试计划。一种是直接添加线程组-事务控制器(可能有多个接口组成一个完成的事务)-HTPP请求,然后手动添加请求参数。如下:

第二种是在工作台中添加一个非测试原件-HTTP代理服务器,然后在浏览器中安装一个代理插件并配置本地地址127.0.0.1,端口8080并使用这个配置。如下:

然后在jmeter中将代理启动,在浏览器中执行需要录制的动作后会发现jmeter中已经开始录制,如下:

当录制到你需要的请求之后,记得关闭http代理,否则他会一直录制所有浏览器上的请求。接下来可以把不需要的请求都删除,只留目标请求:

接下来可以对参数进行调整,根据压测需求调整,比如此处我需要将get请求的返回值中token取出座位check的参数传入。此处我们可以添加一个后置处理器-正则表达式进行配置,具体的配置方式可以百度。

####2.压测参数配置

参数 ramp-up period 用于告知JMeter 要在多长时间内建立全部的线程。默认值是0。假如未指定ramp-up period ,也就是说ramp-up period 为零, JMeter 将立即建立所有线程。假设ramp-up period 设置成T 秒, 全部线程数设置成N个, JMeter 将每隔T/N秒建立一个线程。根本测试目标业务分析线上环境并发是逐渐上升还是一下子爆发,有助于我们配置这些参数。此处ramp-up period 设置过大过小都是不合适的,最合适的方式是先运行一次脚本。具体可参考http://blog.csdn.net/hsd412237463/article/details/49929173

配置完后查看对应的jmx文件,可以看到设置的值都有对应的配置,可以进行修改。

3.执行测试

  • 1)本地windows压测: 本次压测后,发现线程从10往上加到100就容易发生线程卡死。但是从哨兵上系统资源来看远没有达到瓶颈,tps也远远达不到要求。分析原因应该是jmeter进程本身响应问题。
  • 2)服务器分布式压测 为了排除windows的局限性,我将测试计划文件放到服务器上运行。具体运行方式如下(将本地的jmx传到服务器上):
    ./jmeter  -n -t captcha_v2_click.jmx -l captcha_v2_click_thread50.jtl
    

-n表示non-GUI,-t指定TestPlan文件 这种方式是单台服务器发起请求,由于服务器资源有瓶颈,发现在200线程左右就达到瓶颈了,如下图,200线程能达到的tps和300线程的基本没有区别,原因是压测服务器网卡达到瓶颈,且压测服务器的cpu也达到瓶颈:


测试发现从50线程往上增,到150线程的时候已经达到瓶颈。


这样明显不满足要求,考虑使用jmeter的分布式压测方式。一台服务器做master,其他几台做slave,每台最高150并发则4台服务器可以达到600并发 。 具体方法是:

  • 1.所有slaver机器启动jmeter server进程
  • 2.master机器上配置jmeter.propeties
    remote_hosts=slaveA ip:端口,slaveB ip:端口 ,slaveB ip:端口
    
  • 3.master上启动jmeter
    ./jmeter -r -n -t captcha_v2_click.jmx -l captcha_v2_click_thread50.jtl
    
    ( -r表示远程启动(remote, jmeter master会自动向jmeter远程服务器上分发测试计划。) 这种方式生成的jtl文件是表格数据,看不出统计信息,可以导入到jmeter GUI中添加聚合报告看结果,还可以用如下命令转换为html格式的统计报告,可读性更好。
    ./jmeter -g captcha_v2_click_thread50.jtl -e -o /home/nisp/jmeter/apache-jmeter-3.3/resultReport2click
    

生成的测试报告中打开index.html如下:

多个节点分布式压测配置要注意:
  • 保证jmeter客户端和jmeter远程服务器采用相同版本的jmeter和JVM。
  • jmeter客户端和jmeter远程服务器最好在同一个网段内。


本文来自网易实践者社区,经作者何美玲授权发布。