Lettuce的 validateConnection 设置为 true 时,每次通过 getNativeConnection() 获取连接前都会调用 validateConnection() 方法。该方法内部使用 synchronized(this.connectionMonitor) 加锁,然后通过同步方式执行 ping() 命令验证连接有效性,直到验证完成才释放锁。在高并发场景下,大量 Reactor 线程会阻塞在同一个 monitor 上等待获取锁,形成严重的锁争抢。这不仅导致线程阻塞,还使得Redis连接池无法被充分利用,因为线程在争抢 validateConnection 的锁时连接池中的空闲连接无法被分配出去。在本案例中,移除 setValidateConnection(true) 后,响应时间从680ms降至380ms。如果确实需要校验连接有效性,建议采用定时任务(如 @Scheduled)方式定期验证,而非在每次获取连接时同步验证。
加载中...