当前位置 : 主页 > 编程语言 > java >

Jmeter压测Thift服务

来源:互联网 收集:自由互联 发布时间:2022-08-10
下载 用apache-jmeter-4.0版本,5的版本我用的时候有点问题 加入pom dependency groupId org.apache.thrift / groupId artifactId libthrift / artifactId version 0.10.0 / version / dependency dependency groupId org.apache.jmeter


下载

用apache-jmeter-4.0版本,5的版本我用的时候有点问题

加入pom

<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.10.0</version>
</dependency>

<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>4.0</version>
</dependency>

编写测试类

看个大概,以后写详细的例子

public class TestThriftByJmeter extends AbstractJavaSamplerClient {

private BaseSentimentServiceHelper baseSentimentServiceHelper;

/**
* 初始化方法,每个线程都会执行一次
* @param context
*/
@Override
public void setupTest(JavaSamplerContext context) {
String ip = context.getParameter("ip");
String port = context.getParameter("port");
baseSentimentServiceHelper = new BaseSentimentServiceHelper();
baseSentimentServiceHelper.setHost(ip);
baseSentimentServiceHelper.setPort(Integer.valueOf(port));
super.setupTest(context);
}

/**
* 设置参数
* @return
*/
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("ip", "mt011");
arguments.addArgument("port", "60000");
arguments.addArgument("total", "100");
return arguments;
}

/**
* 运行测试方法
* @param javaSamplerContext
* @return
*/
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult sampleResult = new SampleResult();
sampleResult.setDataEncoding("utf-8");
sampleResult.sampleStart();
int total = Integer.valueOf(javaSamplerContext.getParameter("total"));

Map<String, Object> map = new HashMap<>();
List<Content> contentList = new ArrayList<>();
for (int i = 0; i < total; i++) {
Content content = new Content();
content.setMid(String.valueOf(i));
content.setText("情感确实曼妙。有时机遇恰巧会眷顾了爱情。在擦肩而过的人群中谁能与你并肩同行;谁能理会同你一道上船、驶往爱的彼岸。在滚滚红尘中,只有俩厢情愿,情投意合,才能算是一见钟情,顺理成章。");
contentList.add(content);
}
map.put("data", contentList);
long begin = System.currentTimeMillis();
String result = baseSentimentServiceHelper.getSentiInfo(JsonUtil.obj2String(map));
long cost = System.currentTimeMillis() - begin;
System.out.println("cost " + cost);
if (result.equals("")) {
sampleResult.setSuccessful(false);
sampleResult.setDataType(SampleResult.TEXT);
} else {
sampleResult.setSuccessful(true);
sampleResult.setDataType(SampleResult.TEXT);
}
sampleResult.sampleEnd();
return sampleResult;
}


/**
* 完成测试
* @param context
*/
@Override
public void teardownTest(JavaSamplerContext context) {
super.teardownTest(context);
}

/**
* 这个是本地跑用的,执行测试类的时候,并不执行这个方法
* @param args
*/
public static void main(String[] args) {
Arguments arguments = new Arguments();
arguments.addArgument("ip", "mt011");
arguments.addArgument("port", "60000");
arguments.addArgument("total", "100");
JavaSamplerContext context = new JavaSamplerContext(arguments);
TestThriftByJmeter jmeter = new TestThriftByJmeter();
jmeter.setupTest(context);
jmeter.runTest(context);
jmeter.teardownTest(context);
}

}

测试

将测试类放在apache-jmeter-4.0\lib\ext目录下面,
导出工程的依赖

mvn dependency:copy-dependencies -DoutputDirectory=lib

将依赖放在apache-jmeter-4.0\lib目录下

将Jmeter设置为中文

在apache-jmeter-4.0\bin目录下找到jmeter.properties,将language设置为如下形式

language=zh_CN

运行

点击apache-jmeter-4.0\bin下面的jmeter.bat,即可启动

点点配置成如下形式即可

Jmeter压测Thift服务_apache


18个线程,每个线程运行30次

Jmeter压测Thift服务_ide_02


写好的测试类,一些参数可以设置

Jmeter压测Thift服务_apache_03


统计的页面

Jmeter压测Thift服务_java_04


统计之后的结果

各种参数的含义,参考参考博客[2]



上一篇:js正则表达式提取内容
下一篇:没有了
网友评论