V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aoxg2019
V2EX  ›  Java

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

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

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

    https://www.cnblogs.com/macho8080/p/18628542
    zhady009
        16
    zhady009  
       23 小时 52 分钟前
    先看其他环境能不能复现好做验证和收集额外运行时的信息,然后需要确定是哪个线程搞鬼,用 JFR 去记录然后 dump 一下,如果是 Redisson 的问题不想动脑子就先升级版本试试
    conn457567
        17
    conn457567  
       23 小时 48 分钟前 via Android
    这个问题在我们生产环境快一年了。。升级到 resission 最新版本试试,他们上上周出了一个新版本解决这个问题
    Richared
        18
    Richared  
       26 分钟前
    看其他环境能不能复现吧,能复现问题就能解决一大半。生产有些工具你都用不了,只能猜,太影响排查了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3497 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:22 · PVG 12:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.