jmeter性能壓測 分享一段線程隊列--生產者和消費者代碼

以前分享過一篇線程隊列html

#分享一段線程隊列--生產者和消費者代碼#java

而後一直不知道對性能帶來了多大的改善,今天藉着對java應用的壓測,對這段代碼進行一個壓力測試,看看實際效果如何spring

環境:springboot+spring-kafkaspringboot

一個測試case是不用線程隊列來發送kafka消息,mvc

另外一個是藉助線程隊列來存放消息,在消費者端再由kafka發送出去app

這裏用了兩種 a.爲線程隊列,b爲無鎖環形隊列post

@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,爲線程隊列發送消息url

能夠看出使用線程隊列比不使用性能高出1000+ tps

以上爲單機測試,電腦東西開的多,會有必定的影響,不過要正常測試的話,在6k左右是正常

附kafka監控,直接使用kafka發送消息,那麼這裏顯示的message速度會在1-2K之間,若是是線程隊列,那麼在0.5-0.7之間,這裏寫入隊列和取出隊列會有相應的損耗所致

相關文章
相關標籤/搜索