redis出现Lettuce/HGETALL,系统访问卡顿

一、访问卡顿

目前通过skywalking发现,redis出现大量的Lettuce/HGETALL访问,导致系统访问奇慢。


image.png

二、分析

查询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个


image.png

三、解决问题

这时就在想,是不是服务开放出去的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,完美解决问题,系统快的飞起,完美解决。

你可能感兴趣的:(redis出现Lettuce/HGETALL,系统访问卡顿)