使用JMeter进行基本压力测试
一、下载jmeter
下载地址:http://archive.apache.org/dist/jmeter/
选择合适版本下载,PC端与Linux端最好版本一致
二、录制脚本
1.简单的http请求可直接在jmeter上填写
2.也可以用badboy工具录制jmeter脚本
三、进行测试
1.运行jmeter.bat文件
2.添加线程组
3.添加http请求
4.输入服务器名或ip地址、端口号、http请求方法(get或post)、路径等
5.设置线程数(并发用户数)、Ramp-up Period(多久启动完所有线程)、循环次数
6.启动
7.jmeter报内存溢出时,编辑jmeter.bat文件,修改以下数据set HEAP=-Xms1024m -Xmx1024m,视情况设置新值,默认值为512
四、多机联测
利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个行程的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的 Agent 来分担 JMeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的一些修改,具体如下:
1、在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent。然后运行所有 Agent 机器上的JMeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;
2、在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;
3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的 1099 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号;
4、保存文件,并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项,在这里可以看到远程启动菜单下面有192.168.0.1 ,192.168.0.1两个IP地址
5、如果要让某个电脑执行,可以点击改电脑的IP地址就可以,如果两个都要执行,可以点击Run 菜单下的“远程运行全部”菜单
6、有时候用作代理的机器太少,仍不能满足需要,则需要将作为Controller的电脑也当作Agent,则同样需要修改 JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller 电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。
五、使用命令行执行jmeter
1.Windows环境下
命令行方式下进入jmeter的bin目录,执行:JMeter -n -t 文件名.jmx -l log.jtl
2.Linux环境下
执行命令:/home/apache-jmeter-2.8/bin/jmeter -n -t download.jmx -l log.jtl
linux下最好输全路径,不然可能报bash:jeter:command not found,找不到执行文件错误
-n This specifies JMeter is to run in non-gui mode
-t [name of JMX file that contains the Test Plan].
-l [name of JTL file to log sample results to].
-r Run all remote servers specified in JMeter.properties (or remote servers specified on command line by overriding properties)
The script also lets you specify the optional firewall/proxy server information:
-H [proxy server hostname or ip address]
-P [proxy server port]