jmeter分布式性能测试笔记

Jmeter/bin/jmeter.properties

control机器对应的jmeter.properties 修改remote_hosts=10.2.102.250:109(slave机器对应的IP和端口号)
slave机器对应的jmeter.properties 修改server_port=1099 ,server.rmi.localport=1099

slave机器操作命令
./jmeter-server -Djava.rmi.server.hostname=10.25.102.250(slave机的ip)
问题:rmi_keystore.jks (No such file or directory) 修改slave机器上jmeter.properties中server.rmi.ssl.disable=true

修改JMETER_HOME

export JMETER_HOME=/usr/apache-jmeter-4.0/bin
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

https://blog.csdn.net/xiongyu1010/article/details/52246042关闭防火墙
systemctl stop firewalld

netstat -tunlp |grep 1099  查看端口号进程

jmeter生成测试报告文件

jmeter -n -t /usr/apache-jmeter-4.0/bin/mobileCertTet.jmx -l /usr/apache-jmeter-4.0/bin/mobileCertTet.jtl

./jmeter -g test.jtl -e -o /usr/apache-jmeter-4.0/bin/resultReport

https://www.cnblogs.com/blog5277/p/5920560.html打成jar包

JMeter完成java请求的压力测试详解以及问题总结

https://blog.csdn.net/achang21/article/details/52453128/

import java.io.PrintStream;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class mobilep10aptotic
extends AbstractJavaSamplerClient
{
private SampleResult sr;
String method = "mobileCertApplyByCSR";
String dubboUrl = "10.2.102.216:2181,10.2.102.217:2181,10.2.102.218:2181";
String registryId = "rAProvide";
String interfaceName = "com.zxq.iov.cloud.sp.ra.api.IRACertApi";
String version = "1.0";
String p10 = "MIIC8DCCAdgCAQAwgaoxCzAJBgNVBAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTERMA8GA1UEBwwIU2hhbmdoYWkxKjAoBgNVBAoMIUJhbm1hIE5ldHdvcmsgVGVjaG5vbG9neSBDby4sIEx0ZDEaMBgGA1UECwwRWXVuT1MgQXV0byBNb2JpbGUxLTArBgNVBAMMJEJhbm1hVGVzdF8wMGhOd19ySXIyWFh4SXNTMzhVUmdJWVpxejCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMOz1RCt5Ct9PQaF/GhV/ADveP99rsSGlSlRrL/DfcMWaCbPP/eH8NgictuhjG/iWFA4GSrGB/Y+Dortu2rA0FIAEu+H2ZHPH5pcX4E73n5bfQbKs5KXTvR9PdAj7kK3klJLyqpZGqU1WtDA3Wu1JlOS7HrLX0JUXCzjBNwF9vQK9l8C4HPMtED2yJ28fhCgpy2JoKuRTJdcSv4JIE7Ts0QiiehnG5ptbELzqELA97TH62UvyDE53/osIhkeDYcXx9v83Gd3gZ6cS+xRZCG0Sj8mu+N40wUia64sxGU/C3Ur/9FwHp3XWW/RogAYg+pbhe1rcKFw/ctV0ASAkwbUcjUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQC80d9Fsjd/5oV2/qrMTr8UOGd7ftZ8iJRh1eVbA8NLVAhHn78ks5u/8N+3qQifwZI29yFo0krszUVDGehI0nW4iEFJ7bl+uA7R4f8vm0jWI2qdj8KM1JPdsMi7cS8G+cx3d1ySCJqrYETHnBgLbTB/Q1/XKaUZc/ZrVdITYkwBbkL9sHqkB/lS1C33UCil5V8kdN3R5SUMxZt6AKGre8/2D6WUH9P5LuLDHteMPxWtiZJv9x1IzuwimwGReVpA9qRqV/GWYDvDT6dKY6xOmhNffpzSUiv8rEmuF/5DTg8kfD3odQFJfTMyQL2SY0uxeq39l1BvOdMixz8P9Ywbhpbp";
DubboRegistryConfig aRegistry = null;
DubboRequest raRequest;

public Arguments getDefaultParameters() {
Arguments params = new Arguments();

params.addArgument("method", "mobileCertApplyByCSR");
params.addArgument("dubboUrl", "10.2.102.216:2181,10.2.102.217:2181,10.2.102.218:2181");
params.addArgument("registryId", "rAProvide");
params.addArgument("interfaceName", "com.zxq.iov.cloud.sp.ra.api.IRACertApi");
params.addArgument("version", "1.0");
params.addArgument("p10filename", "${p10filename}");
return params;
}
public void setupTest(JavaSamplerContext arg0)
{
sr = new SampleResult();
super.setupTest(arg0);
this.aRegistry = new DubboRegistryConfig(this.dubboUrl);
this.raRequest = this.aRegistry.initRequest(this.registryId, this.interfaceName, this.version);

System.out.println("setupTest");
}

public void teardownTest(JavaSamplerContext arg0)
{
super.teardownTest(arg0);
}

public SampleResult runTest(JavaSamplerContext arg0)
{
// String method =arg0.getParameter("method");
// String dubboUrl =arg0.getParameter("dubboUrl");
// String registryId =arg0.getParameter("registryId");
// String interfaceName =arg0.getParameter("interfaceName");
// String version =arg0.getParameter("version");
// String p10filename =arg0.getParameter("p10filename");

// SampleResult sr = null;
Map<String, Object> params = new LinkedHashMap();
try
{
params.put("p10", this.p10);

sr = new SampleResult();
sr.sampleStart();
System.out.println("begin");
DubboResponse response = this.raRequest.invoke(this.method, params);
sr.setResponseData(response.getResponse().toString(), "UTF-8");

sr.setSuccessful(true);
sr.sampleEnd();
SampleResult localSampleResult1 = sr;
return localSampleResult1;
}
catch (Exception e)
{
e = e;
if (sr != null)
{
sr = new SampleResult();
sr.sampleStart();
}
String alltraces = "";
StackTraceElement[] alltrace = e.getStackTrace();
for (int i = 1; i < alltrace.length; i++) {
alltraces = alltraces + alltrace[i].toString() + System.getProperty("line.separator", "/n");
}
sr.setResponseData(e.getCause().toString() + e.toString() + System.getProperty("line.separator", "/n") + alltraces.toString(), "UTF-8");
sr.setSuccessful(false);
sr.sampleEnd();
return sr;
}
finally {}
}

public static void main(String[] args)
{
mobilep10aptotic itest = new mobilep10aptotic();
itest.setupTest(null);
itest.runTest(null);
System.out.println("end");
}
}


将dubbo接口注册放在setuptest中,可以提高效率
定义全局变量SampleResult,并且在setup中定义,解决dubbo接口连接不上问题

原文地址:https://www.cnblogs.com/meadow/p/9133285.html