问题描述
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内,所以问题到底出现在哪?我该如何继续排查解决这个问题
把访问redis的事件去掉,看一下。感觉应该是建立redis连接的耗时。