Jmeter压测Thift服务

下载

用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,即可启动
点点配置成如下形式即可
在这里插入图片描述
18个线程,每个线程运行30次
在这里插入图片描述
写好的测试类,一些参数可以设置
在这里插入图片描述
统计的页面
在这里插入图片描述
统计之后的结果
各种参数的含义,参考参考博客[2]

参考博客

[1]https://blog.csdn.net/zuozewei/article/details/82589810
[2]https://blog.csdn.net/seven2017219/article/details/82494905

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java识堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值