zoukankan      html  css  js  c++  java
  • 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 明显提高很多:

  • 相关阅读:
    手势
    ios提示框,自动消失
    UITableView
    UIAlertView
    微信公众号主页链接
    试用avalon2.0
    VirtualPathProvider的使用
    代码暂存 [获取二唯码并识别保存二唯码]
    提交数据url太长导致提交失败
    打通前后台
  • 原文地址:https://www.cnblogs.com/testway/p/7771035.html
Copyright © 2011-2022 走看看