博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jmeter 压测duobbo接口,施压客户端自己把自己压死了
阅读量:6719 次
发布时间:2019-06-25

本文共 3039 字,大约阅读时间需要 10 分钟。

jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化。导致越压越慢,请求发不出去。这个时候需要考虑修改代码了。

截图中,tps越来越少。

原来初始化的代码放在

runTest中执行。 修改后放在
setupTest方法中运行,只运行一次。解决实例化消耗内存问题。

 

import com.alibaba.fastjson.JSONObject;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;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.Date;public class TestMsgTemplate extends AbstractJavaSamplerClient {    private static TemplateMsgFacade templateMsgFacade;       @Override   public void setupTest(JavaSamplerContext arg0) {       if (TestMsgTemplate.templateMsgFacade == null) {           ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:app-dubbo-client-context.xml");           TestMsgTemplate.templateMsgFacade = (TemplateMsgFacade) context.getBean("templateMsgFacade");       }   }    @Override    public Arguments getDefaultParameters() {        Arguments params = new Arguments();        params.addArgument("templateCode", "");        return params;    }        @Override    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {                String templateCode = javaSamplerContext.getParameter("templateCode");        SampleResult sr = new SampleResult();        sr.setSampleLabel("MsgTemplate:消息模板");        sr.sampleStart();        TemplateMsgDto dto = new TemplateMsgDto();        dto.setTemplateCode(templateCode);        dto.setMobile("13922808010");        dto.setPointCode("FC7555535");        TemplateMsg msg = templateMsgFacade.getMsgTemplate(dto);               String abc = JSONObject.toJSONString(msg);        msg = null;        if(abc.contains("templateSource")){            //sr.setResponseData("templateSource 成功"+ templateCode, null);            sr.setResponseData(templateCode+"成功", null);            sr.setDataType("text");            sr.setSuccessful(true);            sr.setResponseCodeOK();        }else{            // sr.setResponseData("templateSource 失败"+ templateCode, null);            sr.setResponseData(templateCode+"失败", null);            sr.setDataType("text");            sr.setSuccessful(false);            sr.setResponseCode("404");        }                        sr.sampleEnd();       // abc = null;        return sr;    }    /**     * @param args     */    public static void main(String[] args){        for(int i = 0;i <20000000;i ++){                        System.out.println(i);             Date nowTime = new Date();                System.out.println(nowTime);//方法二:Date方式,输出现在时间        Arguments params = new Arguments();        params.addArgument("templateCode", "hibox.noticeStaffAgainPost_ZH_CN");                JavaSamplerContext arg0 = new JavaSamplerContext(params);        TestMsgTemplate qap = new TestMsgTemplate();        qap.setupTest(arg0);        qap.runTest(arg0);        qap.teardownTest(arg0);        }    }}

 重新运行压测代码j结果,tps 明显提高很多:

 

转载地址:http://pmkmo.baihongyu.com/

你可能感兴趣的文章
FlexPaper和swftools合力打造文库系统
查看>>
学习笔记-Redis设计与实现-压缩列表
查看>>
dockerfile实例--openresety
查看>>
Exadata混合列压缩如何处理INSERT和UPDATE
查看>>
Setup Oracle Direct NFS Client
查看>>
CodeIgniter典型的表单提交验证代码
查看>>
宅男程序员给老婆的计算机课程之4:SQL vs NoSQL
查看>>
VIM编辑模式与命令模式
查看>>
python小技巧-基于python本身
查看>>
【C#】使用ADO .Net Entities Framework 与WPF ListBox控件绑定
查看>>
CentOS5.x系统 配置YUM服务器
查看>>
OTS数据迁移验证方案
查看>>
黑客学习笔记教程之一:黑客文化
查看>>
alias别名、时间、screen、echo等——Linux基本命令(3)
查看>>
Access-Control-Allow-Origin与跨域
查看>>
Python正则表达式详解
查看>>
交换机、路由器设备选型总结
查看>>
linux文件系统介绍
查看>>
find
查看>>
互联网MySQL开发规范
查看>>