jmeter性能压测

之前分享过一篇线程队列

#分享一段线程队列--生产者和消费者代码#

然后一直不知道对性能带来了多大的改善,今天借着对java应用的压测,对这段代码进行一个压力测试,看看实际效果如何

环境:springboot+spring-kafka

一个测试case是不用线程队列来发送kafka消息,

另一个是借助线程队列来存放消息,在消费者端再由kafka发送出去

这里用了两种 a.为线程队列,b为无锁环形队列

@RestController
public class SampleController {

    @Autowired
    private Environment env;

    @Autowired
    private KafkaDisruptorProducer kafkaDisruptorProducer;

    @Autowired
    private KafkaMqProducer kafkaProducer;

    @Autowired
    private KafkaTemplate<Integer, String> kafkaTemplate;

    @RequestMapping("/testProfile")
    public String testProfile(){
        return env.getProperty("profile");
    }

    @RequestMapping("/test4")
    public String homemvckafak4() {
        EventMsg eventMessage=new EventMsg();
        eventMessage.setEventName("test-method-->"+env.getProperty("profile")+System.currentTimeMillis());

        //通过线程生产者-消费者模型来发送消息
        kafkaProducer.write(eventMessage);
        return "kafka3==>Hello World! file.upload.stor-path";
    }


    @RequestMapping("/test3")
    public String homemvckafak() {
        EventMsg eventMessage=new EventMsg();
        eventMessage.setEventName("test-method-->"+env.getProperty("profile")+System.currentTimeMillis());

        //直接走kafka发送消息
        kafkaTemplate.sendDefault(JSON.toJSONString(eventMessage));
        return "kafka3==>Hello World! file.upload.stor-path";
    }

    @RequestMapping("/test")
    public String home() {
        EventMsg eventMessage=new EventMsg();
        eventMessage.setEventName("test-method-->"+env.getProperty("profile")+System.currentTimeMillis());

        //通过高性能无锁队列来发送消息
        kafkaDisruptorProducer.write(eventMessage);
        return "kafka==>Hello World! file.upload.stor-path";
    }

    @RequestMapping("/test2")
    public String homemvc() {

        //直接返回,实测性能作为参照指标
        return "kafka2==>Hello World! file.upload.stor-path";
    }

}

打开jmeter 配置好压测参数,

实测test3,为直接通过kafka发送消息

2.压test4,为线程队列发送消息

可以看出使用线程队列比不使用性能高出1000+ tps

以上为单机测试,电脑东西开的多,会有一定的影响,不过要正常测试的话,在6k左右是正常

附kafka监控,直接使用kafka发送消息,那么这里显示的message速度会在1-2K之间,如果是线程队列,那么在0.5-0.7之间,这里写入队列和取出队列会有相应的损耗所致

posted @ 2017-12-28 11:21  yuan.net  阅读(483)  评论(0编辑  收藏  举报