目录
一、问题详情
在最近新项目的开发当中,当项目刚启动的时候访问Redis服务一切正常,但是过了几分钟后再次访问Redis就报如下错误。
'Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 10 second(s)'
二、根本原因
这个问题我也是第一次碰到,所以我搜索了网上大量的解决方案,总之层次不齐,我通过一晚上的测试和整理,梳理了一下本次问题的两个根本原因:
1、SpringBoot2.0版本以上默认采用了Lettuce作为连接池,但是Lettuce默认是不进行心跳检测的,从而导致了连接超时。
2、服务器的内存不够,我自己的服务器是购买的最便宜的,内存只有2G,导致分配给Redis内存不够,从而运行不稳定,我yml文件配置的明明是10秒过期,有的时候过了5分钟才报了RedisCommandTimeoutException的错误信息,也非常怀疑和我的服务器配置有关。