1. redis-远程主机强迫关闭了一个现有的连接
场景: 访问某个接口很慢,即时访问成功后报错,再次访问一切正常,但是每隔几分钟访问接口仍然很慢或者报错
原因
校验token时,创建连接访问redis,当连接达到最大连接数,导致后面的连接都连接失败
查看redis最大连接数
config get maxclients
查看当前连接数
info clients
解决
1、手动关闭客户端连接
CLIENT KILL ip:port(ip:port通过client list来查看)
缺点:治标不治本
2、redis服务端主动关闭
修改配置文件中的timeout配置项,redis-server会关闭空闲超时的连接
归根结底,是Redis配置conf文件(在Linux服务器(如果Windows跑的redis就在Windows找)安装redis的路径去找)没有配置正确,在130行左右(可以使用ctr+F搜索 tcp-keepalive),将它改成1-50左右的数字,比如改成tcp-keepalive,之前是0或者300貌似,改成小一点的数字就行了,原理百度或者根据配置文件的注释英文翻译一下,记得改完重启Redis.
忒别注意:springboot配置redis超时配置时间 spring.redis.lettuce.shutdown-timeout=100大于Redis服务器配置的 tcp-keepalive 存活时间(比如60)就行,你想吧,超时100>60符合正常逻辑,如果超时关闭时长<存活时长(tcp-keepalive),就相当于你追女生,追到要答应了,在答应前你放弃了,那么竹篮打水一场空,给你一个 远程主机强迫关闭了一个现有的连接 的宿命哈哈哈
我的springboot版本是2.1,Redis是5,貌似Redis3.2.1开始默认60,所以建议改成1-20之间就不那么卡或者报错.