1、String aa = prev.getResponseDataAsString();//取上个响应值
2、String bb = aa.substring(from,to);//截取字符串
int i = aa.indexOf("jsessionid");//字符串查找
3、string.equals(string)//判断字符串相等
4、引入json.jar
import org.json.JSONArray;
import org.json.JSONObject;
JSONObject response_obj = new JSONObject(prev.getResponseDataAsString());
5、结果写入到csv,供其他请求参数化访问,不依赖外部jar
FileWriter fstream = new FileWriter("**.csv",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("***")+"\n");
out.close();
fstream.close();
6、linux下修改jvm参数,防止大并发溢出
jmeter.sh中的java $JVM_ARGS -Xms2G -Xmx8G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
7、修改日志输出级别,把低级别日志关掉,减少负载机开销。我用的是jmeter3.3版本。
位置:bin目录下的log4j.xml中的log_level.jmeter
8、分布式搭建
1)在各台负载机都放jmeter,并且配置好环境变量。linux下,修改用户目录下的.bash_profile,就是刚登上linux时的默认的目录。linux好多级别的环境变量,我们保障自己账户下可用就行,设置在本用户的层面。要注意linux本身要安装jdk,版本也要和jmeter兼容。我用的jmeter3.3,和jdk1.8兼容没问题。
2)slave机的设置:修改jmeter.properties,remote_hosts,设为本slave机自己的ip
3)master机的配置:修改jmeter.properties,remote_hosts,把所有slave机的ip和端口(默认1099,可自行修改)写上,逗号隔开。如果master机自己也要加入测试,自己的ip也写上。
4)所有slave机,bin目录下的jmeter-server,启动。(在bin目录下执行 ./jmeter-server)
此时就可以做分布式测试了。看到有些人遇到问题,主从机不在同一网段导致连不上、要关闭防火墙、端口冲突需要重置等,我刚好没有遇到(其实挺想遇到的~~)。
测试计划不用放到每个slave机上,master会发过去的。如果涉及到本地文件的上传,就都放在bin目录下,只写文件名称,不加路径,jmeter会自己到bin目录下去找。
9、压测时经常要修改压测参数,通过在命令行设定线程组数量、间隔时间,避免经常修改并更换脚本文件。
-JthreadCount=100,对应gui中的参数设定${__P(threadCount,)}
-D对应系统参数的外部设定。