zoukankan      html  css  js  c++  java
  • 一次性能测试的总结

    2019-05-31

    目的为满足客户要求的测试报告,进行实际场景的压力测试

    测试流程  eureka、zuul、后台服务集群3台

    测试工具  JMeter

    1. 并发 100

       zuul报错

       解决1. 从路由配置开始查起,试了hytrix、tomcat等配置之后,依然不行

       解决2. 添加日志开始捕获异常

                发现redis在运行中报 Could not get a resource from the pool 直观上感觉是配置问题

                开始优化配置如下,最后问题得到解决

    @Configuration
    @EnableCaching
    public class RedisCacheConfiguration extends CachingConfigurerSupport {
        private static Logger logger = LoggerFactory.getLogger(RedisCacheConfiguration.class);
    
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.port}")
        private int port;
    
        @Value("${spring.redis.timeout}")
        private int timeout;
    
        @Value("${spring.redis.jedis.pool.max-idle}")
        private int maxIdle;
    
        @Value("${spring.redis.jedis.pool.max-total}")
        private int maxTotal;
    
        @Value("${spring.redis.password}")
        private String password;
    
        @Bean
        public JedisPool redisPoolFactory() {
            logger.info("JedisPool注入成功 redis地址:" + host + ":" + port);
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            //最大空闲连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数
            jedisPoolConfig.setMaxIdle(maxIdle);
            //最大连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数
            jedisPoolConfig.setMaxTotal(maxTotal);
            jedisPoolConfig.setTestOnBorrow(true);
            jedisPoolConfig.setTestOnReturn(true);
    
            /* 性能测试优化新增redis配置*/
            jedisPoolConfig.setMinIdle(20);//设置最小空闲数
            jedisPoolConfig.setMaxWaitMillis(10000);
            //Idle时进行连接扫描
            jedisPoolConfig.setTestWhileIdle(true);
            //表示idle object evitor两次扫描之间要sleep的毫秒数
            jedisPoolConfig.setTimeBetweenEvictionRunsMillis(30000);
            //表示idle object evitor每次扫描的最多的对象数
            jedisPoolConfig.setNumTestsPerEvictionRun(10);
            //表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
            jedisPoolConfig.setMinEvictableIdleTimeMillis(60000);
    
            JedisPool pool = new JedisPool(jedisPoolConfig, host, port, timeout, password);
            return pool;
        }
    }

       解决3. tps始终停留在100左右,换台网络带宽比较大的机器(1M改为10M)

              JMeter并发100,tps能达到1000

    最后附一张基础架构图,准备从目前的微服务自动化迁移到k8s

  • 相关阅读:
    linux centos7 如何安装mysql
    Json转换 在java中的应用
    最最简单的spring mvc + Maven项目
    windows下 申请免费ssl证书的方法 (letsencrypt)
    PowerDesigner中Table视图同时显示Code和Name
    在linux中 部署 mongo 数据库服务端
    Java保存图片到数据库Blob格式
    MyBatis mapper记录
    vue防止多次点击,重复请求
    金额的单位转换,元转分
  • 原文地址:https://www.cnblogs.com/mutong1228/p/10956425.html
Copyright © 2011-2022 走看看