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

Spring Boot基于SQL Server的分布式锁失效问题排查与解决

SQL Server分布式锁延迟实例抢锁问题解决

场景

  • 运行两个部署定时任务的Docker容器实例,需通过SQL Server实现分布式锁避免任务并发执行
  • 已配置DefaultLockRepository与JdbcLockRegistry Bean,完成锁获取代码编写

问题现象

  • 第一个实例启动后:成功获取锁,输出「Locked」日志,数据库生成对应锁记录
  • 间隔30秒启动第二个实例:同样输出「Locked」日志,数据库锁记录被覆盖,分布式锁未生效
  • 间隔5秒内启动第二个实例:锁功能正常,第二个实例无法获取锁

根因

DefaultLockRepository的默认TTL(锁生存时间)为10秒,第一个实例的锁在10秒后自动过期,导致30秒后启动的第二个实例能直接抢占锁。

解决方案

调整DefaultLockRepository的TTL参数为100秒(可根据任务实际执行时长灵活配置),确保锁在任务运行周期内保持有效,其他实例在TTL范围内无法获取该锁。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:07:10