一、访问卡顿
目前通过skywalking发现,redis出现大量的Lettuce/HGETALL访问,导致系统访问奇慢。
二、分析
查询redis的cpu水位压力,在4%,相当于没有压力。
怀疑没有流量进入,是不是客户端的请求都被拦着了?
看下服务中开放的redis的连接池情况:
lettuce:
cluster:
refresh:
adaptive: true
period: 20
pool:
# 连接池中的最小空闲连接
min-idle: 5
# 连接池中的最大空闲连接
max-idle: 10
# 连接池的最大数据库连接数
max-active: 20
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 2000ms
testOnCreate: true
testOnBorrow: true
testOnReturn: true
testWhileIdle: true
最大连接数,只允许20个链接,如果超过这个请求,需要等待。
看了下目前redis链接请求为154个
三、解决问题
这时就在想,是不是服务开放出去的redis链接太少了,导致等待。试着调大一下连接数 max-active。为了不超过redis的最大承载能力,我们查看了redis的最大连接数是60000个,这是后可以大胆的去扩大了。
lettuce:
cluster:
refresh:
adaptive: true
period: 20
pool:
# 连接池中的最小空闲连接
min-idle: 50
# 连接池中的最大空闲连接
max-idle: 50
# 连接池的最大数据库连接数
max-active: 500
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 2000ms
testOnCreate: true
testOnBorrow: true
testOnReturn: true
testWhileIdle: true
于是我们把连接数扩大到了500,完美解决问题,系统快的飞起,完美解决。