jmeter性能测试
jmeter是跨平台组件,可在多平台下运行。一般,我在windows下用GUI编写脚本,然后在linux下运行
必备安装包
- apache-jmeter-3.2.zip https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.2.zip
- jdk-8u131-linux-x64.rpm
http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm?AuthParam=1499493290_8ee142f439f999d97f6bb7e68092b22c
构建测试脚本test.jmx
- 添加线程组
- 构造测试用例
- 设置并发数
- 将测试计划保存成test.jmx, 默认保存到%{安装目录}/bin/下
执行
- 执行机器安装jdk
- 解压apache-jmeter-3.2.zip
- 将test.jmx拷到apache-jmeter/bin目录下(可其他目录)
- 运行./jmeter -n -t test.jmx -l 1.jtl
- -n:非gui模式
- -t:测试的jmx脚本
- -l:测试结果保存在1.jtl
jmeter分布式压测
在单台执行机遇到瓶颈的时候,可采用分布式,进一步提高并发数。
- 选择一台机器做调度机(master),其他机器做执行机(slave);
- 执行时,master会将执行脚本发送到slave上,slave执行时完后,将所得的结果回传给master,master汇总后输出结果;
步骤
- slave的apache-jmeter/bin中执行
./jmeter-server -Djava.rmi.server.hostname=slave机器ip - master的apache-jmeter/bin中执行
./jmeter -n -t test.jmx -l 1.jtl -R slave1_ip:1099,slave2_ip:1099
- 使用了几个slave机器,这里就填几个,slave默认是使用1099端口
- master和slave可同一台
jmeter使用参数化配置
有时候使用的参数并不固定,这时候就需要用到参数化配置
这样后,${domain}的值,就是test.txt里面每一行的内容,所以还要设置一个test.txt文件
注意点:
- 一般配置做相对路径,所以尽量和jmeter放一起,放在apache-jmeter/bin目录下面
- 分布式测试的时候,master只会发jmx脚本,不会发参数化文件,所以test.txt在每台slave都必须有文件
jmeter构造请求头参数