redission 客户端 pod,cpu100%.心跳检测中,出现了 RedisTimeOutException 后,就会导致 CPU 跳升 25%,大概两个小时跳一次,4 此后就到 100%了

1 天前
 aoxg2019
如下图,很有规律,不知道因为什么原因莫名的导致 cpu 暴涨,但是其他机房的 pod,或者说同机房的 pod 却一切正常,应用内只有一个分布式锁的应用,有应用到 leaseTime,应该时没有 watchDog 的,redission 的后台检车线程猜测来看只有心跳检测.不明白的心跳失败后为何 cpu 的暴涨如此有规律.还望有大佬解答.
1294 次点击
所在节点    Java
18 条回复
oneisall8955
1 天前
4 个核,每次一个核心跑满?
aoxg2019
1 天前
@oneisall8955 确实是 4 个 c.不太明白为啥心跳线程失败后会导致 cpu 被用完
fj19
1 天前
有定时任务吧
LiaoMatt
1 天前
会不会是用 while true 来拿分布式锁了
oneisall8955
1 天前
@aoxg2019 #2 考虑某个线程 while true 或者扫描全量 keys 或 scan 模糊查询之类的
aoxg2019
1 天前
@fj19 定时任务应用层面没有,redisson 有心跳任务
aoxg2019
1 天前
@LiaoMatt @oneisall8955 用的 lock.tryLock(0,3,second)这个方式去抢锁。整个应用就这么这个地方用到了 redisson 客户端,其他地方没有用 redis 的
litchinn
1 天前
跑个火焰图,用 arthas 查看下线程情况,观察下 GC 情况
hwdq0012
1 天前
pod 是指 kubernetes 的 pod 吗,如果是不是可以进入 Pod 的 shell 吗,在里面用 gdb 分析一下
cccb
1 天前
哥你名字和 ip 全漏了
listen2wind
1 天前
@cccb 看名字应该是个姐
oneisall8955
1 天前
@listen2wind 敏字,哥姐都能用吧
aoxg2019
1 天前
@litchinn 线上不允许用这些检测工具
aoxg2019
1 天前
@hwdq0012 pod 已经呗 kill 了
oneisall8955
1 天前
额,原来是客户端,java 的 pod 100% 呀,那本地复现下,线程 dump ,看线程状态,或许是下面的原因:

https://github.com/redisson/redisson/issues/6153

https://www.cnblogs.com/macho8080/p/18628542
zhady009
1 天前
先看其他环境能不能复现好做验证和收集额外运行时的信息,然后需要确定是哪个线程搞鬼,用 JFR 去记录然后 dump 一下,如果是 Redisson 的问题不想动脑子就先升级版本试试
conn457567
1 天前
这个问题在我们生产环境快一年了。。升级到 resission 最新版本试试,他们上上周出了一个新版本解决这个问题
Richared
15 小时 51 分钟前
看其他环境能不能复现吧,能复现问题就能解决一大半。生产有些工具你都用不了,只能猜,太影响排查了。

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

https://www.v2ex.com/t/1118932

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

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

© 2021 V2EX