JMeter安装和使用(二)

apache jmeter安装和使用

image description

JMeter安装和使用(二)

接着上一篇继续:

Junit测试

用来测试Junit类

  1. 编写Junit测试类,打成jar包,放在jmeter/lib/junit目录下。
  2. 添加取样器:Add → Sampler → JUnit Request
  3. 设置属性:
  • Name : 取样器的名字
  • Package filter:测试类所在的包
  • Classname:测试类
  • success message:成功的信息
  • success code:成功的返回码
  • failure message:失败的信息
  • failure code:失败的返回码
  1. 添加结果数查看结果:线程组上Add → Listener → View Results Tree

分布式运行

在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。

Jmeter分布式执行原理

  1. Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。

  2. 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。

  3. 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

执行机(slave)配置

  1. 安装jmeter

  2. 执行bin目录下jmeter-server可执行文件,Windows下执行jmeter-server.bat启动时会显示日志文件路径

description

日志文件中可查看端口信息

description

上图上标红的IP和端口会在master里配置时用到。IP就是slave机器IP,端口默认是1099,端口也可以自定义,自定义方式在后面讲。

master配置

  1. 安装Jmeter;

  2. 找到Jmeter的bin目录下jmeter.properties文件,修改如下配置,IP和Port是slave机的IP以及自定义的端口(这里端口我自定义为1000,后面会讲如何自定义):remote_hosts=168.61.10.78:1029多台slave之前用","隔开;

  3. 打开Jmeter,选择运行,有远程启动、运程全部启动两个选项:

description

  1. 选择远程启动-->168.61.10.78:1029  - master里面会显示slave运行结果,这里我只启动了一台slave,所只有一个结果(线程数和循环次数都是1)

description

  • slave控制台信息

description

  1. 选择远程启动-->远程全部启动,则启动所有slave,结果同理。

自定义端口

上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slave端口:

  1. slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:erver_port=1888server.rmi.localport=1888

  2. 启动slave机上的jmeter-server.bat,查看端口是否已经修改

  3. master:修改master机器的jmeter.properties文件:remote_hosts=10.13.225.12:1888

  4. 重启jmeter.bat,如下图,端口已经变了:

description

其它说明

  1. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。

  2. 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

  3. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。  

  4. 需要在每台slave上复制一份脚本文件及相关的文件,且路径要一致;否则会出现在测试一闪而过,“查看结果树”中无任何请求;

  5. master机器的参数文件配置元件CSV Data Set Config中,FileName要给绝对路径;slave机器相对路径绝对路径均可;

遇到的问题

  1. Linux机器上启动Jmeter

到$JMETER_HOME/bin目录下,运行jmeter.sh

description

报错:No X11 DISPLAY variable was set; 原因:没有连接显示器,不能显示GUI所以只能远程启动。我们用的linux机器一般都xshell连接,没有显示器,所以master只能布在Windows机器上。

  1. 启动remote测试后,slave 机器 收到任务,且控制台显示: Starting the test on host 192.168.1.132:1099 @ *** ,说明控制机分派上agent机上的测试成功,但是 一直卡在这里不动了,控制机一直没有显示 任务执行状况以及收到测试结果(任务一直不结束,卡住了)。

Agent机日志里发现错误:

description

此处的160.9.228.81是master机的IP地址。是因为slave连不上master。这个问题当master布在云桌面上会出现,原因不清楚,换到普通Windows上就好了。

  1. 要先启动slave的jmeter-server,再在master上进行远程启动,否则会报错:

description

    END