jmeter 压测duobbo接口,施压客户端自己把自己压死了

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 明显提高很多:

 

posted @ 2017-11-02 10:33  testway  阅读(327)  评论(0编辑  收藏  举报