问题描述

在学习黑马点评:分布式锁Redisson快速入门时遇到的问题:

image-20230204161611752

原因分析

Redisson入门案例

Redisson配置类

image-20230204162148278

使用Redisson的类:VoucherOrderServiceImpl

image-20230204162533317

启动项目(只启动一个8081服务),使用jmeter测试:

image-20230204162741538

测试结果:mysql数据库正确被修改,但是idea控制台报错信息如上

可能存在的原因

  1. Redis超过了最大连接数
  2. 本地Redis(Windows)原因
  3. tcp-keepalive和关闭超时时间的问题

解决过程

Redis超过了最大连接数

  1. 查看当前连接数

    info clients 
    
  2. 查看最大连接数

    config get maxclients
    

测试结果:

image-20230204165018033

如果达到最大连接数后,会导致后面的连接都连接失败,但是发现最大连接数为10000,应该不是这个问题

本地Redis(Windows)原因

由于vmware 启动缓慢,为了方便,使用Windows上安装的Redis做测试,可能存在一些问题

推荐文章:使用Redisson与SpringBoot时出现java.io.IOException: 远程主机强迫关闭了一个现有的连接异常_sodaaxd的博客-CSDN博客_springboot配置redis远程主机强迫关闭了一个现有的连接。

查看当时开启Redis命令:

image-20230204165518485

应该也没问题

tcp-keepalive和关闭超时时间的问题

推荐文章:解决springboot2整合Redis 后某个接口报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接

Linux版Redis解决办法参考上述文章

Windows版Redis修改 [redis.windows.conf] 文件

  1. 查看 tcp-keepalive

    image-20230204170654938

  2. 保存文件,重启Redis(这里我修改为5,自行决定)

  3. 重启项目,恢复mysql数据(虽然控制台报错了,但数据依然正常被修改),jmeter再测

    控制台未报错:

    image-20230204171635006

    mysql正常更新:

    image-20230204171838557

  4. 完美解决bug

关闭超时问题暂未发现,如有遇到可以参考这篇文章:Spring Boot整合Redis报错:java.io.IOException: 远程主机强迫关闭了一个现有的连接

给自己打个广告:最近在学黑马程序员Redis入门到实战教程,如果你也在学习这门课程,可以看我写的黑马点评系列文章(持续更新中),希望对你有所帮助

Logo

鸿蒙生态一站式服务平台。

更多推荐