有个 redisson 锁,加了超时时间。每次发版重启,应用被 kill ,导致 finally 代码块里的锁释放代码不能执行,然后锁也不能释放。重启后这个锁就被空占着,代码也跑不了
请教各位,这个怎么能处理一下吗? del 掉锁的 key ,应该还得在 redis 里 publish 一条消息,可我不知道参数。再就是等锁自己过期
1
zoharSoul 2023-07-17 18:42:21 +08:00
优雅重启
|
2
lbllol365 OP @zoharSoul 用的 k8s + tomcat ,优雅重启是指用个比较温和一点的 kill 参数吗?然后挂一个进程结束钩子?
|
3
wetalk 2023-07-17 18:51:15 +08:00
请求跑到一半,服务被 kill 了咋办你想过没.. 类似的
|
5
connor123 2023-07-17 19:01:31 +08:00
@lbllol365 #2 优雅重启的话,就是等代码任务执行结束后,再退出 tomcat ,这样就不会出现你说的这种问题。
|
6
potatowish 2023-07-17 19:31:48 +08:00 via iPhone
设置 leaseTime ,或者用 redlock
|
7
cylx3124 2023-07-18 09:48:34 +08:00
直接 kill 的话,不只是 redisson 锁会出问题,应用里开启的事务、内存队列也都会受影响。
tomcat 的 bin 目录下有自带的 shutdown.sh 脚本,用这个替换 kill 命令试试。 |
8
liuzhaowei55 2023-07-18 10:29:18 +08:00 via iPhone
超时时间设太久了?正常应用启动时间几秒钟应该是够锁自动过期的了
|