redisson 锁因应用被 kill 导致无法释放问题

2023-07-17 18:30:51 +08:00
 lbllol365

有个 redisson 锁,加了超时时间。每次发版重启,应用被 kill ,导致 finally 代码块里的锁释放代码不能执行,然后锁也不能释放。重启后这个锁就被空占着,代码也跑不了

请教各位,这个怎么能处理一下吗? del 掉锁的 key ,应该还得在 redis 里 publish 一条消息,可我不知道参数。再就是等锁自己过期

842 次点击
所在节点    问与答
8 条回复
zoharSoul
2023-07-17 18:42:21 +08:00
优雅重启
lbllol365
2023-07-17 18:46:18 +08:00
@zoharSoul 用的 k8s + tomcat ,优雅重启是指用个比较温和一点的 kill 参数吗?然后挂一个进程结束钩子?
wetalk
2023-07-17 18:51:15 +08:00
请求跑到一半,服务被 kill 了咋办你想过没.. 类似的
lbllol365
2023-07-17 18:54:58 +08:00
@wetalk 我这块用锁的东西是比较幂等的,今天应用挂了,三天内重跑几次都可以
connor123
2023-07-17 19:01:31 +08:00
@lbllol365 #2 优雅重启的话,就是等代码任务执行结束后,再退出 tomcat ,这样就不会出现你说的这种问题。
potatowish
2023-07-17 19:31:48 +08:00
设置 leaseTime ,或者用 redlock
cylx3124
2023-07-18 09:48:34 +08:00
直接 kill 的话,不只是 redisson 锁会出问题,应用里开启的事务、内存队列也都会受影响。

tomcat 的 bin 目录下有自带的 shutdown.sh 脚本,用这个替换 kill 命令试试。
liuzhaowei55
2023-07-18 10:29:18 +08:00
超时时间设太久了?正常应用启动时间几秒钟应该是够锁自动过期的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/957504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX