用synchronized加快redis连接池连接回收

                                                                                       用synchronized加快redis连接池连接回收

     由于用于支持交易的服务要求并发量达到800以上,所以用了缓存集群用于缓解数据库压力,增大并发量,再接口写完后,压测在前面20分钟还是好的,然后再20分钟后开始崩溃,并发下降到200-300,为探其究竟,将每次接收服务的时候将线程池情况,redis连接池的情况进行全部输出用于观察(眼见为实,努力接近问题才能更快解决问题),最终发现随着压测进行,redis连接池的占用数越来越高,达到设置最大池100后,连接虽然不再上升,但是也不再下降,大量请求因为获取redis连接池连接失败导致缓存失效,直接打到数据库,导致并发量马上下降,

       通过排查得知,是redis连接池连接回收不及时导致大量请求无法拿到连接,从而导致大量缓存失效,因此需要解决如何让连接快速回收,或者说让大部分访问都能走缓存,经过研究发现redis缓存池在用完后有及时关闭回收,但是还是不够及时,很多请求一旦拿不到连接就马上访问数据库。

        基于这种情况,一、是改造缓存池,这明显代价有点高。经过研究过后,大佬提出了另一种解决方案,给获取redis连接的方法加一个锁,那么这样的话所有请求不会一拿不到锁就访问数据库,而是会在获取redis连接的方法面前等待一会,等待其他请求用完连接后再去获取锁,经过研究,等待获取redis连接的时间远小于直接访问数据库的时间。

        经过改造,缓存失效问题得以缓解,并发量不会再20分钟后急剧下降,整体并发较为稳定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值