愤怒中的小草

博客园 首页 新随笔 联系 订阅 管理

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

 

posted on 2019-05-31 17:20  愤怒中的小草  阅读(197)  评论(0编辑  收藏  举报