spring boot 2 redis并发访问慢

新手上路,请多包涵

问题描述

spring boot 2 redis并发访问慢

我通过如下代码,来统计访问redis的时间:(这是一个web服务中的部分代码)

StopWatch stopWatch = new StopWatch();  
stopWatch.start();  
redisTemplate.opsForValue().get(key)redisTemplate.opsForValue().get(key)  
stopWatch.stop();  
logger.info(stopWatch.prettyPrint());

我的spring boot application配置如下:

spring.redis.host=127.0.0.1  
spring.redis.port=6379  
spring.redis.database=0  
spring.redis.timeout=100000

当我测试的时候,使用如下代码:

for (int i = 0; i < 100; i++) {  
    Thread.sleep(50);  
    executorService.execute(new Runnable() {  
    @Override  
    public void run() {  
        test();   //访问web接口
        }  
    });  
}

在sleep 50毫秒的时候,打印的日志,消耗时间都在0~1ms

running time (millis) = 1

但是当我修改为sleep 5毫秒时,running time的时间出现了明显提高,大部分在0~15ms,少部分在40ms左右

for (int i = 0; i < 100; i++) {  
    Thread.sleep(5);  // 修改这
    executorService.execute(new Runnable() {  
    @Override  
    public void run() {  
        test();  // 访问web
        }  
    });  
}

据我所知redis不应该因为100个并发就出现性能下降,观察redis的slowlog执行时间也在1~0ms内,所以问题到底出现在哪?我该如何继续排查解决这个问题

阅读 4.5k
1 个回答

把访问redis的事件去掉,看一下。感觉应该是建立redis连接的耗时。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题