使用Cluster的Redis集群时建议配置合理的超时时间
客户端配置问题导致无法连接。
当集群实例备节点故障情况下,客户端使用SpringBoot + Lettuce的方式连接Redis,使用的Lettuce客户端在连接集群时,需要与所有节点先建立连接(包括故障节点)。
- 在未配置timeout超时的情况下,模拟备节点故障时,可能出现分钟级的超时阻塞(Lettuce客户端的老版本默认超时为120s,新版本默认为60s),配置如下图:
可能会导致端到端业务访问时间过长(最长达到默认超时时间),如下图所示:
- 在客户端侧添加timeout参数后,备节点超时时间大幅度缩短,并且可以根据客户自己的业务诉求进行调整,配置如下:
配置后查看端到端业务访问时间如下图所示:
因此在未配置timeout参数情况下,客户端在建立连接时,故障节点由于未配置timeout超时,在建立连接时会出现连接阻塞的情况。
建议:用户需根据业务能容忍的超时时间进行设置,例如在一次HTTP端到端请求中,需要请求两次Redis,而HTTP请求的最大超时时间为10s,则建议将超时时间配置为5s,防止由于超时时间过长或者未配置超时时间造成故障场景下的业务受损。