Redisson加锁异常

日志分析

日志显示核心错误是 Redisson 加锁时发生 StacklessClosedChannelException,表明 Redis
客户端(Redisson)与 Redis 服务器的连接通道已关闭,但客户端仍尝试写入数据(加锁操作),导致加锁失败。

错误原因分析

StacklessClosedChannelException 是 Netty(Redisson 底层依赖的网络框架)抛出的异常,通常意味着:

  • 客户端与 Redis 服务器的 TCP 连接已被意外关闭(可能是 Redis 服务端主动断开,或网络中断)。
  • 客户端未检测到连接关闭,仍尝试通过已关闭的通道发送命令(如 tryLock 加锁命令)。

结合之前的背景,可能的诱因包括:

  1. Redis 服务端不稳定:因 AOF 权限问题反复报错,导致 Redis 进程频繁重启或连接被强制关闭。
  2. 连接超时或闲置时间过长:Redisson 配置的连接超时、闲置时间过短,Redis 主动断开闲置连接。
  3. 网络波动:Kubernetes 集群内网络不稳定,Pod 间通信偶尔中断。
  4. Redis 资源不足:内存、CPU 占用过高,导致无法处理新连接。

排查步骤

检查 Redis 服务端状态(优先确认)

确保 Redis 服务器本身运行稳定,无频繁重启或资源瓶颈:

# 查看 Redis Pod 状态(是否频繁重启)
kubectl get pods -n dcrm-system | grep redis-new

# 若 RESTARTS 次数不为 0,说明频繁重启,需查看原因

# 查看 Redis 服务器日志(是否有崩溃、连接拒绝等错误)
kubectl logs -f <redis-pod-name> -n dcrm-system

# 重点关注是否有 OOM(内存溢出)、权限错误导致的进程退出

# 检查 Redis 资源使用情况(是否内存/CPU 不足)
kubectl top pod <redis-pod-name> -n dcrm-system
  • 若 Redis 频繁重启:需先解决之前的 AOF 权限问题(彻底修复写入权限,避免进程因错误退出)。
  • 若资源不足:在 Deployment 中增加 Redis 的资源限制(resources.limits)。
检查 Redisson 客户端配置(连接参数)

Redisson 连接配置不当(如超时时间过短、连接池设置不合理)会导致连接不稳定。需检查应用的 Redisson 配置(通常在
application.yml 或 redisson.yml 中):

spring:
  redis:
    redisson:
      config: |
        singleServerConfig:
          address: "redis://redis-new.dcrm-system.svc.cluster.local:6379"  # 使用 Kubernetes Service 域名(稳定)
          connectionMinimumIdleSize: 5  # 最小空闲连接数(避免频繁创建连接)
          connectionPoolSize: 10  # 连接池大小(根据并发调整)
          idleConnectionTimeout: 30000  # 闲置连接超时(30秒,超过则关闭)
          connectTimeout: 10000  # 连接超时(10秒,避免快速失败)
          timeout: 3000  # 命令执行超时(3秒)
          retryAttempts: 3  # 失败重试次数
          retryInterval: 1000  # 重试间隔(1秒)
  • 使用 Service 域名:避免直接使用 Pod IP(可能因重启变化),通过 redis-new.dcrm-system.svc.cluster.local 访问(Kubernetes 内部 DNS 解析)。
  • 调大超时参数:idleConnectionTimeout、connectTimeout 过小会导致连接被过早关闭,建议根据实际网络情况调整。

总结

当前问题是 Redis 连接不稳定(频繁断开) 导致的 Redisson 加锁失败,而连接不稳定很可能是之前 Redis
权限问题未彻底解决(导致 Redis 进程重启或连接被拒)的后续影响。解决优先级:

  1. 彻底修复 Redis AOF 写入权限问题(确保 Redis 进程稳定运行,无频繁重启)。
  2. 优化 Redisson 连接配置(调大超时参数、使用 Service 域名)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值