产品动态
公告
故障类型 | 业务场景 | Lettuce 版本 | 核心问题 |
主动切换 | 兼容版本升级、代理版本升级、数据迁移 | Lettuce 6.1.05之前版本 | 默认不启用 TCP Keepalive(探测空闲连接是否存活),导致客户端连接池无法感知后端 VIP 的切换。旧连接仍被保留在池中,即使服务端已完成切换,客户端仍会持续使用无效连接抛出错误。 |
被动切换 | 物理机异常宕机 | Lettuce 6.3.0之前版本 | 未配置 TCP_USER_TIMEOUT 参数,当网络闪断或节点宕机时,操作系统可能长时间(默认 ≥30 分钟)保持半开连接。客户端连接池无法及时回收这些"僵尸连接",造成持续报错。 |
SocketOptions socketOptions = SocketOptions.builder().keepAlive(SocketOptions.KeepAliveOptions.builder()// 两次 keepalive 间的时间间隔.idle(Duration.ofSeconds(TCP_KEEPALIVE_TIME))// 连接空闲多久开始 keepalive.interval(Duration.ofSeconds(TCP_KEEPALIVE_TIME/3))// keepalive 几次之后断开连接.count(3)// 是否开启保活连接.enable().build()).tcpUserTimeout(SocketOptions.TcpUserTimeoutOptions.builder()// 解决服务端rst导致的长时间超时问题.tcpUserTimeout(Duration.ofSeconds(TCP_USER_TIMEOUT)).enable().build())// tcp 连接超时设置.connectTimeout(Duration.ofMillis(redisConnectTimeout)).build();
文档反馈