zoukankan      html  css  js  c++  java
  • 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之间,这里写入队列和取出队列会有相应的损耗所致

  • 相关阅读:
    数据结构与算法JavaScript (一) 栈
    js架构设计模式——前端MVVM框架设计及实现(二)
    js架构设计模式——前端MVVM框架设计及实现(一)
    js架构设计模式——MVC,MVP 和 MVVM 的图示及简单明了的区别说明
    js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
    js面向对象oop编程
    js模块化开发——前端模块化
    SPRING 集成 activemq 的 topic 模式
    linux yum 本地源配置
    ORACLE 导入的问题
  • 原文地址:https://www.cnblogs.com/fangyuan303687320/p/8134726.html
Copyright © 2011-2022 走看看