You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac启动SpringBoot报Redisson无法初始化足够Redis连接异常

问题根因
  • 连接配置与网络链路不匹配:Redisson单节点模式默认最小空闲连接数为24,当前配置中连接超时仅设置为2000ms。本地通过Telepresence代理访问K8s集群内Redis时,链路比集群内网访问多了多层代理转发,网络延迟、TCP握手开销远高于内网场景,超时窗口内无法完成全部24个连接的初始化,就会抛出"Only 10 of 24 were initialized"的异常。另外当前配置使用单节点模式直连Redis主节点,2核配置的主节点本身并发处理建连请求的能力有限,跨网场景下更容易出现建连超时。
  • Telepresence代理限流:Telepresence默认转发规则对单目标地址的并发TCP建连请求存在软限制,短时间内并发发起24个连接请求时,部分请求会被代理限流、丢包,导致连接建立失败。
  • 低版本Redisson的架构兼容问题:3.17.0之前的Redisson版本在Apple Silicon(M系列)芯片上存在Netty原生传输层的兼容bug,会随机出现建连超时的问题。
修复方案
  • 分环境调整Redisson配置:通过Spring Profile区分本地调试和生产环境的配置参数,本地调试场景下调低连接池大小、拉长超时时间,适配跨代理的网络状况,示例配置如下:
config.useSingleServer()
        .setAddress("redis://" + redisHost + ":" + redisPort)
        .setPassword(redisPwd)
        .setTimeout(5000)
        .setDatabase(1)
        .setConnectionMinimumIdleSize(5)
        .setConnectionPoolSize(10)
        .setConnectTimeout(10000);

生产环境部署在K8s集群内部时,保持原有高连接池、低超时的内网优化配置即可,不会影响线上性能。

  • 优化Telepresence转发规则:启动Telepresence时添加--also-proxy 10.108.0.0/16(替换为实际K8s集群的Service网段)参数,确保Redis相关流量全部走代理通道,不会被本地路由规则拦截丢包。
  • 升级Redisson版本:将Redisson依赖升级到3.17.1及以上版本,修复M系列芯片下的传输层兼容问题。
验证步骤
  • 重启Spring Boot服务,观察启动日志,无Redisson连接初始化报错即为启动正常
  • 启动完成后执行简单的Redis读写测试,确认set/get操作正常,连接池运行稳定

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:24:28